>>>>> From: 切明政憲 (KIRIAKE Masanori) <[EMAIL PROTECTED]>
>>>>> Date: Thu, 04 May 2006 20:38:53 +0900

 > iPodはarmを使っているようで、armバイナリを作成できるコンパイラと
 > binutilsが必要のようです。
 > portsにそれらしいものを見つけてインストールして使ってみましたが、どう
 > もうまくいきません。
 > 
 > インストールしたのは、
 > 
 > arm-elf-binutils-2.14_1 GNU binutils for vanilla ARM cross-development
 > arm-elf-gcc-2.95.3  GNU cross compiler suite for vanilla ARM targets
 > 
 > で、コンパイルするとこんな結果になります。
 > 
 > cc1: Invalid option `long-calls'


portsの方は使ったことがないのでわかりませんがgccとbinutilsのソース
があればクロスコンパイラを作ることは比較的簡単にできます。
ipod向けの開発環境を作るということらしいですが...私はそちらの事情
をよく知らないのですがarmと一口に言ってもいくつかアーキテクチャが
ありますし出力されるバイナリの形式もいくつか考えられます。
そのあたりはどうなのでしょうか?

以降全然FreeBSDの話ではなくなりますが、参考までにarm--elf32の形式
でクロスコンパイラを作る方法を書いておきます。
因みに以前FreeBSD PressにH8のクロス環境を作ってITRONを動かす記事を
書きましたがその内容の焼き直しです。

使ったソースアーカイブ : gcc-3.4.6.tar.bz2, binutils-2.16.tar.gz
newlib-1.14.0.tar.gz (ftp://sources.redhat.com/pub/newlib/ これは必要
ないかも)。
例えば作業ディレクトリを /usr/local/src/arms_gccとしておいて

 % cd /usr/local/src/arms_gcc
 % xvzf binutils-2.16.tar.gz
 % cd binutils-2.16; mkdir objdir ; cd objdir
 % ../configure --prefix=/usr/local/arm-cross-elf --target=arm-cross-elf
 % gmake all
 % gmake info
 % su
 # gmake install

 % cd /usr/local/src/arms_gcc
 ここでPATHに/usr/local/arm-cross-elf/binを加えておきます 
 % tar xvyf gcc-3.4.6.tar.bz2
 % tar xvzf newlib-1.14.0.tar.gz
 % cd gcc-3.4.6
 % ln -s ../newlib-1.14.0/newlib .
 % mkdir objdir
 % cd objdir
 % ../configure --prefix=/usr/local/arm-cross-elf --target=arm-cross-elf  
--enable-languages="c" --with-newlib
 % gmake all
 % su
 #
 ここでもう一度PATHに/usr/local/arms-cross-elf/binを加える
 # gmake install

 targetの指定はbinutilsのソースのbfd/config.bfdのターゲットに書かれて
 いる文字列が指定可能です。
 (ARMならば arm-*-rtems*, armeb-*-elf, arm*b-*-linux-gnu, arm-*-kaos*
 arm-*-elfなど多数)

 以上のように作ったgcc(arm-cross-elf-gcc)でcのソースをコンパイルするこ
 とはできました。
 % arm-cross-elf-gcc test.c
 % file a.out
a.out: ELF 32-bit LSB executable, ARM, version 1 (ARM), statically linked, not 
stripped
 % arm-cross-elf-gcc -S test.c
 % less test.s
        .file   "test.c"
        .text
        .align  2
        .global get_cmd
        .type   get_cmd, %function
get_cmd:
        @ args = 0, pretend = 0, frame = 20
        @ frame_needed = 1, uses_anonymous_args = 0
        mov     ip, sp
        stmfd   sp!, {fp, ip, lr, pc}
        sub     fp, ip, #4
        sub     sp, sp, #20
        :
--
  yoshiaki
 (う)  

メールによる返信