首页 > 解决方案 > Boost ld:最终链接失败:错误值:针对未定义的隐藏符号重定位 R_X86_64_PC32

问题描述

我正在尝试将 boost 库与我们的代码链接,但出现以下错误

ld:/boost/lib/laxno/libboost_thread.a(thread.o):重定位 R_X86_64_PC32 针对未定义的隐藏符号`_ZTCN5boost10wrapexceptINS_21thread_resource_errorEEE0_NS_16exception_detail10clone_implINS3_19error_info_injectorIS1_EEEE' 在制作共享对象时无法使用 ld:最终链接失败:错误值

我使用 GCC 7.4.0 使用以下命令构建了 boost ./b2 cxxflags="-fPIC -std=c++14" cflags="-fPIC" -j4

如果在构建 boost 库时排除“-fPIC”标志,则会出现以下错误:

/boost/lib/laxno/libboost_thread.a(thread.o): 重定位 R_X86_64_32 对 `.text' 不能在制作共享对象时使用;使用 -fPIC /boost/lib/laxno/libboost_thread.a 重新编译:无法读取符号:值错误

标签: c++linuxboostlinker

解决方案


使用来自 boost 安装位置而不是构建位置的 boost 库和 boost .so 文件解决了这个问题。


推荐阅读