collect2:错误:在制作带代码块的.so文件时,ld返回1退出状态(64位版本)

时间:2019-01-22 10:52:35

标签: c++ codeblocks ubuntu-18.04

我的问题是在代码块中制作.so文件,在较旧版本(32位)中制作我的.so文件的项目失败,并在新版本(64位)中出现以下错误

/usr/bin/ld: obj/Debug/src/tester.o: relocation R_X86_64_PC32 against symbol `_ZTV6tester' 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

codeblocks命令行

g++ -Wall -fexceptions -g -Iinclude -c /home/amini/codes/testr/main.cpp -o obj/Debug/main.o
g++ -Wall -fexceptions -g -Iinclude -c /home/amini/codes/testr/src/tester.cpp -o obj/Debug/src/tester.o
g++ -shared  obj/Debug/main.o obj/Debug/src/tester.o  -o bin/Debug/liblibTestso.so -m64 -fPIC 

帮助我解决这个问题,非常感谢

1 个答案:

答案 0 :(得分:0)

我看到了许多有关此错误的链接,没有人清楚地回答我的问题 从32位迁移到64位Linux系统代码块时,出现上述错误

通过将-fPIC添加到编译器选项,该问题无法解决,因为其他目标文件没有使用该选项,则应转到设置>编译器>其他设置>高级选项,然后在其中添加-fPIC