2009-03-21 6 views
0

共有ライブラリ「libeval.so」があります。私は私のプロジェクトでこれを使って、より多くの共有ライブラリ、「lidpi.so」と言うライブラリを作成しています。 "libdpi.so"というライブラリはツールで使用されています。今、このツールは "libdpi.so"以外のライブラリを見ることができません。私は "libeval.so"に存在するいくつかの関数呼び出しを使用していますが、これらは "libdpi.so"にはありません。 gccにスイッチがありますか、これを克服するものがありますか?linuxの他のライブラリを使って共有ライブラリを作成する

+1

私はまったく問題はないと思います。このツールはlibpiにリンクします。また、libpiに別のライブラリが必要な場合は、実行時にそのライブラリをロードすることに気をつけます。ツールは気にしないでください。 –

答えて

2

libeval.soを開くことができるようにlibdpi.soが設計されている場合、プログラムは約libdpi.soを知る必要があります。 libdpi.so

dlopen("path/to/libdpi.so", RTLD_LAZY); 

その後、他の機能はlibeval.soとインターフェースすることができる。具体的に

libdpi.soは、おそらくこのように、 dlopenを呼び出して、いくつかの機能を持っている必要があります。

編集:このコマンドを使用し、共有ライブラリを構築するには:

gcc -shared -o libdpi.so [list of object files to go in libdpi.so] 

注:あなたがあなたのオブジェクトを構築すると、gccで-fPICコマンド引数を使用して、このような:

gcc -fPIC -o foo.o foo.c 
+0

libdpi.soがどのように作成されるのかわかりません:( – Alphaneo

+0

何とか、次のオプションが動作しているようです:) gcc -fPIC $(ALL_OBJ)$(ALL_PATH)-level -shared -o libdpi.so 説明を見つけてみてください:) 私はまた、あなたの提案についていくつかの研究を行いました。おそらくライブラリをロードするのはいい方法でしょう。 – Alphaneo