暫定版です
まもなく登場する FreeBSD 4.9 ですが、Release Candidate 3 を
インストールして、aragoi.exe が動作するまでの具体的な作業です。
5.1 も 同様に動作することを確認しています。
0 前提条件
Unix のコマンドを理解していること。
FreeBSD のインストール プロセスを理解していること。
1 linux バイナリ互換モジュール linux.ko
Linux バイナリ互換モジュールがシステムにロードされているか確認します。
# kldstat
ロードされていない場合は、次のようにします。
# kldload linux.ko
このモジュールをロードしておかないと、Arago for Internet のような
Linux で動作するアプリケーションを実行させることができません。
通常は、/etc/rc.conf ファイルに、
linux_enable="YES"
と書いておくと、システム起動時に自動的にロードされます。
2 Linux エミュレータ
デフォルトの linux_base-7.1_5 ではなく、linux_base-8-8.0_1 を組み込む
ようにします。linux_base-7.1_5 では、コアダンプしてしまいます。
最新の ports には、linux_base-8-8.0_1 が含まれています。
ネットワーク的に近くの、帯域幅の広いサイトから、ports.tar.gz を
ダウンロードして、所定のディレクトリに展開してください。
# cd /usr/ports/emulators/linux_base-8
# make all install
すでに、ports などから、パッケージとして、linux_base-7.1_x を組み込んでいる
場合は、必ず pkg_delete コマンドで linux_base-7.1_x 削除してください。
3 ICC のライブラリ
Linux 版 aragoi.exe が、どのようなライブラリを必要としているかを確認します。
# ldd /usr/local/www/cgi-bin/aragoi.exe
/usr/local/www/cgi-bin/aragoi.exe
libm.so.6 => /lib/libm.so.6 (0x281b1000)
libcprts.so.3 => not found
libcxa.so.3 => not found
libunwind.so.3 => not found
libc.so.6 => /lib/libc.so.6 (0x281d3000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x2819c000)
このとき、"not found" と表示されている3 つのファイルは、Intel C++ Compiler の
ライブラリです。この3つのファイル
libcprts.so.3
libcxa.so.3
libunwind.so.3
をシステムに伝える必要があります。
他のライブラリと区別するために、ディレクトリを作成して、コピーします。
# mkdir -p /usr/local/lib/icclib
# cp -p *.so.3 /usr/local/lib/icclib
4 共有ライブラリ
Linux のエミュレータとして動かすわけですから、FreeBSD 版の ldconfigでは
なく、Linux エミュレータ環境にある ldconfig を使用します。
また共有ライブラリのあるディレクトリが書かれている ld.so.conf ファイルも
Linux エミュレータ環境にある ld.so.conf ファイルを使用します。
# echo /usr/local/lib/icclib >> /compat/linux/etc/ld.so.conf
# /compat/linux/sbin/ldconfig -v /compat/linux/etc/ld.so.conf
(途中省略)
/usr/local/lib/icclib:
libcprts.so.3 -> libcprts.so.3
libcxa.so.3 -> libcxa.so.3
libunwind.so.3 -> libunwind.so.3
5 確認
ICC の共有ライブラリのディレクトリを aragoi.exe が把握できたかを
確認するために、
# ldd /usr/local/www/cgi-bin/aragoi.exe
/usr/local/www/cgi-bin/aragoi.exe
libm.so.6 => /lib/libm.so.6 (0x281b1000)
libcprts.so.3 => /usr/local/lib/icclib/libcprts.so.3 (0x281d3000)
libcxa.so.3 => /usr/local/lib/icclib/libcxa.so.3 (0x28263000)
libunwind.so.3 => /usr/local/lib/icclib/libunwind.so.3 (0x28295000)
libc.so.6 => /lib/libc.so.6 (0x2829a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x2819c000)
これで、コンパイルする環境が整備されたはずです。
このとき、まだ、"not found" というメッセージが表示されている場合は、
ステップ 3 から、もう一度繰り返してください。
また、次のようなエラーになる場合には、
/usr/local/www/cgi-bin/aragoi.exe:
ELF binary type "0" not known.
/usr/local/www/cgi-bin/aragoi.exe: signal 6
linux.ko が組み込まれていません。ステップ 2 から、もう一度確認してください。
6 Let's go!