Samba-3.6.1

Glibc-2.14 になった直後から、Samba がビルド出来なくなっていた。
昨日(?)、BLFSブックに libtirpc が追加されたので、Samba がビルドできるか試してみた。

結果は、すんなりとはいかない状態であるが、何とかビルドできるようになった。
備忘録。

まず Samba-3.6.1 を単純にビルドしただけでは、エラーになる。
本日最新の BLFS ブックにて、Samba-3.6.1 は LFS7.0 においてビルドできると書いてあるのに。
そして Web 検索しても、エラー報告がヒットしない。おかしいな。

そのエラーは以下:

Compiling smbd/server.c
Compiling smbd/server_exit.c
Compiling smbd/msg_idmap.c
Linking bin/smbd
lib/sysquotas_nfs.o: In function `my_xdr_getquota_args':
sysquotas_nfs.c:(.text+0x1a): undefined reference to `xdr_string'
sysquotas_nfs.c:(.text+0x2f): undefined reference to `xdr_int'
lib/sysquotas_nfs.o: In function `my_xdr_getquota_rslt':
sysquotas_nfs.c:(.text+0x5e): undefined reference to `xdr_int'
sysquotas_nfs.c:(.text+0xcb): undefined reference to `xdr_int'
sysquotas_nfs.c:(.text+0x131): undefined reference to `xdr_bool'
sysquotas_nfs.c:(.text+0x197): undefined reference to `xdr_int'
sysquotas_nfs.c:(.text+0x1fd): undefined reference to `xdr_int'
sysquotas_nfs.c:(.text+0x263): undefined reference to `xdr_int'
lib/sysquotas_nfs.o: In function `sys_get_nfs_quota':
sysquotas_nfs.c:(.text+0x55b): undefined reference to `clnt_create'
sysquotas_nfs.c:(.text+0x56c): undefined reference to `authunix_create_default'
collect2: ld はステータス 1 で終了しました
make: *** [bin/smbd] エラー 1

そもそも libtirpc を認識参照していない。どうするべきなのか?・・・
LDFLAGS+=”tirpc” とか LDFLAGS+=”-ltirpc” とかするのだろうか?
よく分からないので Makefile.in を書き換えた。以下はその diff

diff -Naur samba-3.6.1.orig/source3/Makefile.in samba-3.6.1/source3/Makefile.in
--- samba-3.6.1.orig/source3/Makefile.in 2011-10-19 03:48:48.000000000 +0900
+++ samba-3.6.1/source3/Makefile.in 2011-11-20 19:16:56.794871750 +0900
@@ -1780,14 +1780,14 @@
$(KRB5LIBS) $(DYNEXP) $(PRINT_LIBS) $(AUTH_LIBS) \
$(ACL_LIBS) $(PASSDB_LIBS) $(LIBS) $(DNSSD_LIBS) $(AVAHI_LIBS) \
$(POPT_LIBS) @SMBD_LIBS@ $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) \
- $(LIBWBCLIENT_LIBS) $(ZLIB_LIBS)
+ $(LIBWBCLIENT_LIBS) $(ZLIB_LIBS) -ltirpc

bin/nmbd@EXEEXT@: $(BINARY_PREREQS) $(NMBD_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
@echo Linking $@
@$(CC) -o $@ $(NMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) \
@LIBWBCLIENT_STATIC@ $(LIBWBCLIENT_LIBS) \
$(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(POPT_LIBS) \
- $(KRB5LIBS) $(LDAP_LIBS) $(ZLIB_LIBS)
+ $(KRB5LIBS) $(LDAP_LIBS) $(ZLIB_LIBS) -ltirpc

bin/swat@EXEEXT@: $(BINARY_PREREQS) $(SWAT_OBJ) @BUILD_POPT@ $(LIBTALLOC) $(LIBTDB) $(LIBWBCLIENT)
@echo Linking $@

これによりビルドも通り、正常動作している模様。

実動作としては、とりあえず解決したのであるが、その前に「すったもんだ」があり、
libunwind をビルド、インストールしていた時には、以下のエラーが出ていた:

Compiling utils/smbcontrol.c
Linking bin/smbcontrol
/usr/bin/ld: /usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../lib64/libunwind-ptrace.a(_UPT_access_fpreg.o): relocation R_X86_64_32S against `_UPT_reg_offset' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../lib64/libunwind-ptrace.a: could not read symbols: Bad value
collect2: ld はステータス 1 で終了しました
make: *** [bin/smbcontrol] エラー 1

libunwind をスタティックでビルドするべき? しないべき? よく分からなかった。
したがって libunwind はアンインストールすることで、この場を逃げることにし、
そうしてようやく Samba-3.6.1 がビルドできるようになった。
libunwind については、おいおい調べていくことにしよう。

何はともあれ、ここ数ヶ月、ずっと Samba がビルドできなかったのが、
ようやく解決したので、やれやれ、といった1日。

カテゴリー: LFS パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です