共有ライブラリ「libeval.so」があります。私は私のプロジェクトでこれを使って、より多くの共有ライブラリ、「lidpi.so」と言うライブラリを作成しています。 "libdpi.so"というライブラリはツールで使用されています。今、このツールは "libdpi.so"以外のライブラリを見ることができません。私は "libeval.so"に存在するいくつかの関数呼び出しを使用していますが、これらは "libdpi.so"にはありません。 gccにスイッチがありますか、これを克服するものがありますか?linuxの他のライブラリを使って共有ライブラリを作成する
0
A
答えて
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
私はまったく問題はないと思います。このツールはlibpiにリンクします。また、libpiに別のライブラリが必要な場合は、実行時にそのライブラリをロードすることに気をつけます。ツールは気にしないでください。 –