gpt4 book ai didi

c++ - 尽管使用 -fPIC 进行编译,但链接器错误 "relocation R_X86_64_PC32 against undefined symbol"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:53 29 4
gpt4 key购买 nike

我正在使用命令行编译一个c++程序

g++ -c prog.cc -std=c++11 -march=native -fPIC -fopenmp

然后尝试通过

创建一个共享对象
g++ prog.o -shared -fopenmp -o lib/libprog.so

这一直有效。但是今天我得到:

/usr/bin/ld: prog.o: relocation R_X86_64_PC32 against undefined symbol 
`_ZTVN12_GLOBAL__N_111handle_baseE' can not be used when making a shared
object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

符号_ZTVN12_GLOBAL__N_111handle_baseE分解为 vtable for (anonymous namespace)::handle_base( handle_base 是在 prog.cc 的匿名命名空间中定义的多态类,是的,我调用了 dynamic_cast<handle_base>() 。)

我使用的是 gcc 版本 4.7.0 (GCC) 和 GNU ld(GNU Binutils;openSUSE 11.1)2.19。任何人都可以提供帮助(建议解决方案 [除了没有共享对象或 dynamic cast ])吗?

最佳答案

我在升级到 ubuntu 14.04 时遇到了类似的问题。我必须将 -fkeep-inline-functions 添加到定义“缺失”符号的源文件中。不知道您的问题是否类似。

关于c++ - 尽管使用 -fPIC 进行编译,但链接器错误 "relocation R_X86_64_PC32 against undefined symbol",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14779260/

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