2012-12-11 54 views
3

我使用C++編寫程序,從中將其製作成共享庫 - 並將其用於JNI。我有第三方庫(libexample.a),需要將它鏈接到共享庫(libshared.so)。問題是,我在64位CentOS上工作,-fPIC需要創建共享庫,但第三方庫不是用-fPIC編譯的。在64位操作系統上將靜態庫(不帶-fPIC)鏈接到共享庫上

直到建立我recive: /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的源代碼...)

是否有任何解決方法使其工作?甚至當我將不得不編寫額外的應用程序的想法。

我希望我的問題不會重複(或多或少),因爲我花了很長時間尋找可能性。 謝謝,貝茲

回答

3

有沒有辦法做出任何解決方法。我不得不寫信給第三方庫的開發與-fPIC

0

再次編譯試試這個:

set_property(TARGET TheirLib PROPERTY POSITION_INDEPENDENT_CODE ON)

這將設置第三方項目子卡選項。

Source for this answer

相關問題