在编译链接 boost 和 python 库的共享库时,我收到错误:
/usr/bin/ld: libboost_python.a(from_python.o): 重定位 R_X86_64_32 对 `.rodata.str1.8' 不能在制作共享对象时使用;使用 -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}
)