[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:44842] シンボル未解決の共有ライブラリ作成



ありたと申します。

共有ライブラリについて質問があります。

[質問]
例えばlibA.soという共有ライブラリを作成したいのですが、
このライブラリはlibB.soとが提供するAPI(ここではfuncBとします)
を利用しているとします。

おそらく一般的には、以下のようにビルドすると思います。
gcc -fPIC -Wall -o funcA.o -c funcA.c (ソースはfucnA.cのみとする)
gcc -shared -Wl,-soname,libA.so.1 -o libA.so.1.0 funcA.o -L. -lB

私がやりたいことは、-L. -lBをつけなくてもシンボルが見つからない
というリンクエラーを発生させずにfuncBがUNDEFのままlibA.soを作成
することです。当然lddで見てもlibB.soはリンクしていないです。

Apacheのモジュール(DSO)の中にはこのような状態のモジュールが存在
しています。例えばmod_ssl.soなどはOpenssl(crypto.so,ssl.so)のAPIを
利用していますが、lddでみてもリンクしていません。nmで見てもOpenSSLの
APIはUNDEFになったままでした。

gccおよびldでこのようなことを実現するためのオプションが用意されて
いると思っています。

有識者の方々、ご教授お願いいたします。