フリーSolarisでここまでやれる! |
| 山森丈範 YAMAMORI Takenori ●yamamori@kt.rim.or.jp |
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 をクロスコンパイル