2011-07-08 11 views
2

作成中に別の共有ライブラリとリンクする共有ライブラリを提供することは可能ですか?エンドユーザーにはわかりませんか?共有ライブラリ、ライブラリ依存性

私が何を意味するかの例として:

共有ライブラリ

g++ ... `pkg-config gtk+-2.0 --cflags` ... `pkg-config gtk+-2.0 --libs` 

目的のユーザーを作成しlibfoo.so.0が共有ライブラリです

g++ file.cc -lfoo 

を構築します。

ユーザービルドにpkg-config gtk+-2.0 ...が含まれている場合にのみ、これが機能するように見えるかもしれません。エンドユーザがlibfoo内で使用される間接ライブラリについて心配する必要がないように、共有オブジェクトの作成中に方法がありますか?

+0

あなたはgtk lib isteadの静的バージョンを取得している可能性はありますか?もしそうなら、それはユーザーリンクの間にも必要になります。それ以外の場合は、本当に共有ライブラリを使用している場合は、ビルド時には必須ではなく、実行時に必要になります。 –

答えて

3

あなたがlibXYZ.soにリンク共有ライブラリlibABC.soを持っている場合は、
あなたlibABC.soを作成しながら、アプリケーションをコンパイルしながらlibXYZ.so

ld --shared -o libABC.so -L. -lXYZ 

とリンクする必要があり、

gcc app.c -L. -lABC 

ドン忘れないで、図書館のパスをエクスポートする

export LD_LIBRARY_PATH=. 
+0

+1環境変数 'LD_LIBRARY_PATH'に頼るのではなく' -Wl、-rpath、.'で 'DT_RPATH'を設定することができます。 –