在编译链接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,-Bdynamic
就是这样!我必须从定义中删除-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}
)
答案 0 :(得分:0)
问题是你正在尝试使用libboost_python构建一个共享库,它似乎是以无法链接到共享库的方式构建的。
有三种方法。