我的问题是在代码块中制作.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
帮助我解决这个问题,非常感谢
答案 0 :(得分:0)
我看到了许多有关此错误的链接,没有人清楚地回答我的问题 从32位迁移到64位Linux系统代码块时,出现上述错误
通过将-fPIC添加到编译器选项,该问题无法解决,因为其他目标文件没有使用该选项,则应转到设置>编译器>其他设置>高级选项,然后在其中添加-fPIC