フリーSolarisでここまでやれる! |
山森丈範 YAMAMORI Takenori ●yamamori |
GNU のソースを make する時,ソースを展開後,普通に ./configure としてもいいのですが,同じソースに対して異なる configure や異なるプラットフォームで make を繰り返すため,ソースは,リードオンリーにし, 隣に作業ディレクトリを作って,セパレートソースで configure するようにします.
●configure方式のディレクトリ構成
筆者は常に環境変数を,
CC=gcc CFLAGS='-O2 -pipe -s' LDFLAGS=-s
と設定しています.こうすることにより, configure や make 時に,自動的に gcc や最適化オプションが設定されます.
SunOS 4.1.4 上で,binutils-2.9.1 を,
configure --target=sparc-sun-solaris2.7
として configure し,make し,インストールします.できたバイナリは,
/usr/local/sparc-sun-solaris2.7/bin
以下,および,/usr/local/bin 以下には
sparc-sun-solaris2.7-as
のようなコマンド名でインストールされます.
SunOS 4.1.4上で,
# cd /usr/local/sparc-sun-solaris2.7 # mv lib lib-0 # ln -s /diskless/solaris2.7/root/client/usr/lib . # ln -s /diskless/solaris2.7/root/client/usr/include .
として,Solaris 7 の include と lib が見えるようにします.
SunOS 4.1.4 上には,同バージョンの gcc-2.8.1 がすでにインストールされているものとします.
SunOS 4.1.4 上で,gcc-2.8.1 を,
configure --target=sparc-sun-solaris2.7
として configure します.Solaris 2.6 以前の場合,ここで,/usr/ccs/lib/values-Xa.o をカレントディレクトリにコピーする必要がありましたが, Solaris 7 では,values-Xa.o が /usr/lib に存在するようになったため,その必要はありません.
#!/bin/sh -x ( date time make -j3 LANGUAGES=c \ CC=gcc \ CFLAGS='-O2 -pipe -s' \ LIBGCC1_TEST='' date ) 2>&1 | tee -a stage1-log |
make できたらインストールします.
# make LANGUAGES=c install
ここで,LANGUAGES=c を付け忘れると g++ などの make が始まってしまうので注意して下さい.
sunos4$ sparc-sun-solaris2.7-gcc -v -O2 -pipe -s hello.c -o hello solaris7$ ./hello Hello!!
上記のようにテストしてみて下さい.
クロスコンパイラを使って Solaris7 ネイティブコンパイラを作成します.SunOS 4.1.4 上で,
configure \ --build=sparc-sun-sunos4.1.4 \ --host=sparc-sun-solaris2.7
で configure します.
#!/bin/sh -x ( date time make -j3 LANGUAGES=c \ CC=sparc-sun-solaris2.7-gcc \ CFLAGS='-O2 -pipe -s' \ LIBGCC1_TEST='' \ GCC_FOR_TARGET=sparc-sun-solaris2.7-gcc \ build=sparc-sun-sunos4.1.4 \ host=sparc-sun-solaris2.7 date ) 2>&1 | tee -a stage1-log |
また,configure の不具合か,make 時に Makefile 中の変数の build と host を再度指定してやらない といけないようなので指定しています.
これで,Solaris 7 ネイティブコンパイラができました.これを,Solaris 7 上で,一旦インストールします.まだ Solaris 7 上では GNU make が出来ていないので,/usr/ccs/bin/make を使うことになるでしょう.
なお,ここで単に make installとやると,
You have to install gcc on your target machine by hand.
と表示されて何もせずに終ってしまうので,
# /usr/ccs/bin/make \ LANGUAGES=c INSTALL='/usr/ucb/install -c' \ AR=/usr/ccs/bin/ar install-normal
とします.
このあと,今出来た gcc をベースにして,Solaris 7 上でもう一度,今度は普通に gcc を make します.そして,この gcc を再度インストールします.
筆者の場合は,このあとさらに binutils-2.9.1 を make し,それを使ってまた gcc を make しなおし,それを使って binutils を make しなおすというところまでやりました.最後には,gcc の make を stage3 まで行ない,stage2 と stage3 のバイナリが完全に一致することを確認しました.これで, Solaris 7 の gcc-2.8.1+binutils-2.9.1 のインストールが完了となります.
■参考■ Solaris 2.5.1 で gcc-2.7.2.1 をクロスコンパイル