1

ブースト ライブラリと 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}
)
4

1 に答える 1

0

問題は、共有ライブラリにリンクできないような方法で構築されているように見える libboost_python で共有ライブラリを構築しようとしていることです。

それには3つの方法があります。

  1. ライブラリを共有しないでください
  2. boost_python ライブラリの共有バージョンをビルドする
  3. 未解決のboost_pythonへの参照を盗む
于 2012-07-17T13:14:01.150 に答える