以前、ARM LPC2388 (CQ出版Interface誌付録基板) 用にGNU GCCの開発環境を整備しました。
今回、複数のタイプのARMプロセッサのアプリケーション開発に対応するため、再度開発環境を整備し直しました。
主な留意点は、
・浮動小数点演算コプロセッサ搭載、非搭載とMPUを2つに区分して、開発環境を整えます。
1.浮動小数点演算コプロセッサ非搭載(-msoft-float / -mfloat-abi=soft)
①インストール先ディレクトリ作成
・cd /usr/local
・mkdir arm-tools-sfp
②各パッケージの解凍(c:\DownLoad\GNUに各サイトよりダウンロード済み)
・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.20.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.2.tar.bz2
・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
1)binutilsパッケージのインストール
①cd binutils-2.20
②./configure --target=arm-elf --prefix=/usr/local/arm-tools-sfp ・・OK
③make ・・失敗 2.19でOK
④make install ・・2.19でOK
※binutils-2.20の場合 ③のmakeでエラー ・・・インストール失敗
gcc -DHAVE_CONFIG_H -I. -I. -I. -I../bfd -I./config -I./../include -I./.. -I./.
./bfd -DLOCALEDIR="\"/usr/local/arm-tools-sfp/share/locale\"" -W -Wall -Wstrict
-prototypes -Wmissing-prototypes -Werror -g -O2 -MT tc-arm.o -MD -MP -MF .deps/t
c-arm.Tpo -c -o tc-arm.o `test -f 'config/tc-arm.c' || echo './'`config/tc-arm.c
config/tc-arm.c: In function `make_mapping_symbol':
config/tc-arm.c:2488: warning: empty body in an if-statement
make[4]: *** [tc-arm.o] Error 1
make[4]: Leaving directory `/usr/local/binutils-2.20/gas'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/binutils-2.20/gas'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/binutils-2.20/gas'
make[1]: *** [all-gas] Error 2
make[1]: Leaving directory `/usr/local/binutils-2.20'
make: *** [all] Error 2
*まあ、よくわからないので、前回と同じbinutils-2.19で試す。
こちらは成功。
*全てのパッケージのインストール後に再度binutils-2.20のインストールを試すが、やはりmakeで失敗した。
2)gmpパッケージのインストール
①cd ../gmp-4.3.1
②./configure --prefix=/usr/local/arm-tools-sfp ・・OK
③make ・・OK
④make check ・・OK
⑤make install ・・OK
3)mpfrパッケージのインストール
①cd ../mpfr-2.4.1
②./configure --prefix=/usr/local/arm-tools-sfp --with-gmp=/usr/local/arm-tools-sfp ・・OK
③make・・OK
④make check・・OK
⑤make install・・OK
4)gccパッケージのインストール
①cd ..
②mkdir BuildGcc
③cd BuildGcc
④../gcc-4.4.2/configure --target=arm-elf --with-float=soft --with-gmp=/usr/local/arm-tools-sfp --with-newlib --with-mpfr=/usr/local/arm-tools-sfp --prefix=/usr/local/arm-tools-sfp --enable-interwork --enable-multilib --enable-languages=c --disable-libssp ・・・OK
⑤make ・・・OK
⑥make install ・・・OK
*ここで/usr/local/arm-tools-sfp/binのディレクトリにパスを通す。
(newlibパッケージのインストール makeでの失敗対応)
・cd ユーザーホームディレクトリへ移動
・.bash_profileを編集し、/usr/local/arm-tools-sfp/binのディレクトリにパスを通す。
( PATH=/usr/local/arm-tools-sfp/bin:${PATH} を追加)
・Cygwinを一旦終わらせ、再稼動させる。
5)newlibパッケージのインストール
①cd /usr/local/newlib*
②./configure --target=arm-elf --with-float=soft --prefix=/usr/local/arm-tools-sfp ・・・OK
③make・・・失敗
④make install
※③のmakeでエラー ・・・インストール失敗
touch stmp-targ-include
Making all in libc
make[4]: Entering directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc'
Making all in argz
make[5]: Entering directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc/argz'
arm-elf-cc -B/usr/local/newlib-1.17.0/arm-elf/newlib/ -isystem /usr/local/newli
-1.17.0/arm-elf/newlib/targ-include -isystem /usr/local/newlib-1.17.0/newlib/li
c/include -B/usr/local/newlib-1.17.0/arm-elf/libgloss/arm -L/usr/local/newlib-1
17.0/arm-elf/libgloss/libnosys -L/usr/local/newlib-1.17.0/libgloss/arm -DPACKAG
_NAME=\"newlib\" -DPACKAGE_TARNAME=\"newlib\" -DPACKAGE_VERSION=\"1.17.0\" -DPA
KAGE_STRING=\"newlib\ 1.17.0\" -DPACKAGE_BUGREPORT=\"\" -I. -I../../../.././ne
lib/libc/argz -O2 -DARM_RDI_MONITOR -fno-builtin -g -O2 -c -o lib_a-dumm
.o `test -f 'dummy.c' || echo '../../../.././newlib/libc/argz/'`dummy.c
/bin/sh: arm-elf-cc: command not found
make[5]: *** [lib_a-dummy.o] Error 127
make[5]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc/argz'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib/libc'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/local/newlib-1.17.0/arm-elf/newlib'
make[1]: *** [all-target-newlib] Error 2
make[1]: Leaving directory `/usr/local/newlib-1.17.0'
make: *** [all] Error 2
*確かに arm-elf-cc は存在しなかった。
*再度gccのインストール(上書き) make all も実行 ・・・同じエラー
*/usr/local/arm-tools-sfp/binのディレクトリにパスを通すと成功。
6)gccパッケージの補足インストール
①cd ../BuildGcc
②make
③make install
7)その他
①cd ユーザーホームディレクトリへ移動
②.bash_profileを編集し、 PATH=/usr/local/arm-tools-sfp/bin:${PATH} を削除
③Cygwinを一旦終わらせ、再稼動させる。
2.浮動小数点演算コプロセッサ搭載(-mhard-float / -mfloat-abi=hard)
①インストール先ディレクトリ作成
・cd /usr/local
・mkdir arm-tools-hfp
②各パッケージの解凍
・tar jxvf /cygdrive/c/DownLoad/GNU/binutils-2.20.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gmp-4.3.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/mpfr-2.4.1.tar.bz2
・tar jxvf /cygdrive/c/DownLoad/GNU/gcc-4.4.2.tar.bz2
・tar zxvf /cygdrive/c/DownLoad/GNU/newlib-1.17.0.tar.gz
1)binutilsパッケージのインストール
①cd binutils-2.19
②./configure --target=arm-elf --prefix=/usr/local/arm-tools-hfp ・・OK
③make ・・OK
④make install ・・OK
2)gmpパッケージのインストール
①cd ../gmp-4.3.1
②./configure --prefix=/usr/local/arm-tools-hfp ・・OK
③make ・・OK
④make check ・・OK
⑤make install ・・OK
3)mpfrパッケージのインストール
①cd ../mpfr-2.4.1
②./configure --prefix=/usr/local/arm-tools-hfp --with-gmp=/usr/local/arm-tools-hfp ・・OK
③make・・OK
④make check・・OK
⑤make install・・OK
4)gccパッケージのインストール
①cd ..
②mkdir BuildGcc
③cd BuildGcc
④../gcc-4.4.2/configure --target=arm-elf --with-float=hard --with-gmp=/usr/local/arm-tools-hfp --with-newlib --with-mpfr=/usr/local/arm-tools-hfp --prefix=/usr/local/arm-tools-hfp --enable-interwork --enable-multilib --enable-languages=c --disable-libssp ・・・OK
⑤make ・・・OK
⑥make install ・・・OK
*ここで/usr/local/arm-tools-hfp/binのディレクトリにパスを通す。
・cd ユーザーホームディレクトリへ移動
・.bash_profileを編集し、/usr/local/arm-tools-hfp/binのディレクトリにパスを通す。
( PATH=/usr/local/arm-tools-hfp/bin:${PATH} を追加)
・Cygwinを一旦終わらせ、再稼動させる。
5)newlibパッケージのインストール
①cd /usr/local/newlib*
②./configure --target=arm-elf --with-float=hard --prefix=/usr/local/arm-tools-hfp ・・・OK
③make・・・OK
④make install・・・OK
6)gccパッケージの補足インストール
①cd ../BuildGcc
②make
③make install
7)その他
①cd ユーザーホームディレクトリへ移動
②.bash_profileを編集し、 PATH=/usr/local/arm-tools-hfp/bin:${PATH} を削除
3.2つの開発環境について 比較。
1)コンパイラー等開発ツール
◎/usr/local/arm-tools-sfp/bin、/usr/local/arm-tools-hfp/binの主要ツール
・arm-elf-gcc.exe( 519708Byte)
・arm-elf-as.exe (2757595Byte)
・arm-elf-ar.exe (1804448Byte)
・arm-elf-objcopy.exe(2303260Byte)
についてバイナリサイズは2つの環境とも同じでした。浮動小数点演算コプロセッサー使用、非使用で各ツール自体に異なることはないと推測。
2)ライブラリ
◎/usr/local/arm-tools-sfp/arm-elf/lib、/usr/local/arm-tools-hfp/arm-elf/libの主要ライブラリ
・libc.a(soft:3174978Byte hard:3169002Byte)
・libg.a(soft:3174978Byte hard:3169002Byte)
・libm.a(soft:953244Byte hard:876948Byte)
◎そのほかのライブラリ
・libgcc.a (soft:363326Byte hard:357882Byte)
・libgcov.a (soft:30906Byte hard:30906Byte) ・・・同じ
についてライブラリサイズは若干、浮動小数点演算コプロセッサ使用のほうが小さい。
0 件のコメント:
コメントを投稿