ブースト ライブラリと Python ライブラリをリンクする共有ライブラリをコンパイルすると、次のエラーが表示されます。
/usr/bin/ld: libboost_python.a(from_python.o): `.rodata.str1.8' に対する再配置 R_X86_64_32 は、共有オブジェクトを作成するときに使用できません。-fPIC libboost_python.a で再コンパイル: シンボルを読み取れませんでした: 値が正しくありません
詳細モードを使用して、コンパイラの定義を確認しました。
/usr/bin/c++ -fPIC -g -shared -Wl,-soname,libCore.so -o .../libCore.so Core.cpp.o -lpython2.7 -Wl,-Bstatic -lboost_python -Wl,-バダイナミック
それでおしまい!定義から削除-Wl, -Bstatic
する必要がありますが、その方法は? 私はcmakeビルドシステムを使用しています。これは、その共有ライブラリを生成するコードの一部です:
set(Core_SRC
Core.cpp
)
add_definitions(-g -fPIC)
add_library(Core SHARED ${Core_SRC})
target_link_libraries(Core
${PYTHON_LIBRARIES}
${Boost_LIBRARIES}
)