gpt4 book ai didi

c++ - 删除编译器定义

转载 作者:太空宇宙 更新时间:2023-11-04 14:15:32 27 4
gpt4 key购买 nike

在编译链接 boost 和 python 库的共享库时,我收到错误:

/usr/bin/ld: libboost_python.a(from_python.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC libboost_python.a: could not read symbols: Bad value

我使用详细模式查看编译器定义:

/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}
)

最佳答案

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

有 3 种方法。

  1. 不要共享您的图书馆
  2. 构建 boost_python 库的共享版本
  3. 保留对 boost_python 的引用未解决

关于c++ - 删除编译器定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com