1
我想鏈接boost.python與我的應用程序在cmake生成系統。 在我CMakeList.txt最重要的部分:鏈接器設置
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost COMPONENTS filesystem system date_time python REQUIRED)
add_definitions(-Wall -g -msse2 -fPIC)
,當然,包括/連接升壓和Python庫/頭。
現在這個失敗:
/usr/bin/ld: libboost_python.a(from_python.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
libboost_python.a: could not read symbols: Bad value
我決定去CMake的臨時編譯文件夾,找到產生目標文件(*的.o)。 我已經爲它應用命令:
g++ -shared FILE.cpp.o -L/usr/lib -lboost_python -o MyModule.so
結果我得到了可行的MyModule的模塊蟒蛇!所以,讓我們看看cmake鏈接器字符串並找出差異。我跑做與VERBOSE = 1:
/usr/bin/c++ -fPIC -g -shared -Wl,-soname,libScript.so -o ../../lib/libScript.so CMakeFiles/LogManagerWrapper.cpp.o -Wl,-Bstatic -lboost_filesystem -lboost_system -lboost_date_time -lboost_python -Wl,-Bdynamic -lpython2.7
在排除該連接物的標誌,我發現我的問題是在輪候冊,前提升庫列表-Bstatic的某些部分。
我想知道從哪裏來的論點,因爲我注意到CMostList.txt中的Boost_USE_STATIC_LIBS OFF。
怎麼了?
我檢查了它。有兩個:a等。 – Ockonal 2011-03-13 09:16:43