删除编译器定义



编译链接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}
)

问题是您正在尝试使用libboost_python构建共享库,该库似乎是以无法链接到共享库的方式构建的。

有 3 种方法可以解决这个问题。

  1. 不要共享您的库
  2. 构建boost_python库的共享版本
  3. 将引用boost_python未解决

最新更新