3

私はC ++でプログラムを書き、そこから共有ライブラリが作成されます-そして、それはJNIによって使用されます。サードパーティのライブラリ ( libexample.a ) があり、それを共有ライブラリ ( libshared.so ) にリンクする必要があります。問題は、私が 64 ビット CentOS で作業していて、共有ライブラリを作成するには -fPIC が必要ですが、サードパーティのライブラリが -fPIC でコンパイルされていないことです。

私が受け取る建物まで: /usr/bin/ld: /home/tom/Project/src/libexample.a(SomeObject.o): relocation R_X86_64_32 against 'someData' can not be used when making a shared object; recompile with -fPIC

この状況で共有ライブラリを作成することは可能ですか? (libexample.a のソースコードがありません...)

それを機能させるための回避策はありますか?追加のアプリを作成する必要がある場合のアイデアも。

可能性を探すのに長い時間を費やしたので、私の質問が(多かれ少なかれ)重複していないことを願っています. ありがとう、ベズ

4

2 に答える 2

3

回避策を講じる方法はありませんでした。もう一度コンパイルするためにサードパーティのライブラリ開発者に手紙を書かなければなりませんでした-fPIC

于 2013-03-24T23:02:39.150 に答える