Mon, 25 Jul 2005
Zeta1.0 今日の成果 wget
取りあえず、次のようにしてみた。リンク時にエラーが出て止ってしまいます。
CPPFLAGS=-I/boot/home/config/include LDFLAGS=-L/boot/home/config/lib ./configure --prefix=/boot/home/config --enable-static=yes --enable-shared=no --disable-ipv6;make
host.o: In function `gethostbyname_with_timeout_callback': host.o(.text+0x2bc): undefined reference to `gethostbyname' host.o: In function `gethostbyname_with_timeout': host.o(.text+0x30a): undefined reference to `__h_errno' host.o: In function `pretty_print_address': host.o(.text+0x3b6): undefined reference to `inet_ntoa' host.o: In function `lookup_host': host.o(.text+0x723): undefined reference to `inet_addr' host.o(.text+0x7e3): undefined reference to `__h_errno' collect2: ld returned 1 exit status make[1]: *** [wget] Error 1 make[1]: Leaving directory `/boot/home/Build/wget-1.10/src' make: *** [src] Error 2
次はリンクするライブラリにlibbind.soを加えて、もう一度。undefined referenceが減りました。もう少しかも。
host.o: In function `pretty_print_address': host.o(.text+0x3b6): undefined reference to `inet_ntoa' host.o: In function `lookup_host': host.o(.text+0x723): undefined reference to `inet_addr' collect2: ld returned 1 exit status make[1]: *** [wget] Error 1 make[1]: Leaving directory `/boot/home/Build/wget-1.10/src' make: *** [src] Error 2
試しに/boot/zeta/etc/develop/zeta-r1-gcc2-x86/lib/x86
以下でgrepしてみると、inet_addrやinet_ntoaという文字列を含んだバイナリファイルがたくさん引っ掛ります。やっぱり無い訳じゃないのに、どうしてリンク出来ないのだろう…このディレクトリにある共有ライブラリは全部、/boot/beos/system/lib
以下にある実体へのシンボリックリンクです。元のファイルがあるディレクトリをつらつら眺めてみると…こっちにしか無い、いかにもな名前のやつがありました。libnet.soのシンボリックリンクを作ってやり、リンクするライブラリに加えてみると…ひとつめで正解です。
Zeta1.0のパッケージングのミスということですね。ヘッダはあるけどライブラリがちゃんとした場所に無かったわけです。