diary/Kojima

・libcom_err.so

多分、どっちでも問題ないレベルの話だけど、しばらくハマっていたのでメモ代り。

OpenLDAP-2.4.29 -> heimdal-1.5.2 とビルドしてきて、samba-3.6.3をビルドしてみたのだけど、 よく見ると、/usr/sbin/smbd が参照しているライブラリがx86とx86_64でちょっとだけ異なっている。

$ diff -u x86 x86_64
--- x86 2012-03-11 10:31:47.202454283 +0900
+++ x86_64      2012-03-11 13:07:38.800407709 +0900
@@ -1,4 +1,4 @@
-/lib/ld-linux.so.2
+/lib64/ld-linux-x86-64.so.2
 libacl.so.1
 libasn1.so.8
 libattr.so.1
@@ -6,7 +6,7 @@
 libavahi-common.so.3
 libc.so.6
 libcap.so.2
-libcom_err.so.1
+libcom_err.so.2
 libcrypt.so.1
 libcrypto.so.1.0.0
 libcups.so.2
@@ -40,4 +40,4 @@
 libwbclient.so.0
 libwind.so.0
 libz.so.1
-linux-gate.so.1
+linux-vdso.so.1

具体的には、x86ではlibcom_err.so.1を参照するのに、x86_64ではlibcom_err.so.2を参照している。 あれれ、と思って調べてみると、libcom_err.so.1はheimdalパッケージ由来で、libcom_err.so.2はe2fsprogs由来。

パッケージを調べてみると、x86用のe2fsprogs(e2fsprogs-1.42-i586-P1.txz)にも、 x86_64用のe2fsprogs(e2fsprogs-1.41.12-x86_64-P2.txz)にも/lib{,64}/libcom_err.so.2.0.0は存在し、 /usr/lib{,64}/libcom_err.so からのリンクも存在している。

それなのに、なぜx86環境ではe2fsprogs由来のlibcom_err.so.2ではなく、 heimdal由来のlibcom_err.so.1を見にいってしまうのだろう、、とsambaのconfigureスクリプトを読んでみたら、 /usr/bin/compile_etコマンドの有無でe2fsprogsのlibcom_err.soが使えるかを判別しているようだった。

そこで改めてパッケージのリストを見ると、x86_64用には/usr/bin/compile_etがあるけど、x86用には無い。 さらによく見たら、x86_64用には/usr/lib64/pkgconfig/com_err.pcがあるけど、x86用には無い。

どうやらこのヘンだろうと目星を付けて、PlamoBuildスクリプトを調べたら、x86_64用では make install してから make install-libs しているけど、x86用では make install しかしていなかったのが原因っぽい。

多分、シンボル等は解決できているはずなので、参照先がlibcom_err.so.1でもlibcom_err.so.2でも問題にはならないとは 思うけど、念のため、このあたり両者が同じ内容になるようにパッケージングをし直す予定。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:42