欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

relocation R_X86_64_32S against `.data‘ can not be used when making a PIE object; recompile with -fP

发布时间:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 relocation R_X86_64_32S against `.data‘ can not be used when making a PIE object; recompile with -fP 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

linux下编译汇编语言报错:

relocation R_X86_64_32S against `.data' can not be used when making a PIE object; recompile with -fPIE

代码如下:

test.asm

global mainmain:mov ebx, 1mov ecx, 2add ebx, ecxmov [sui_bian_xie], ebxmov eax, [sui_bian_xie]retsection .data sui_bian_xie dw 0 dontla@dontla-virtual-machine:~/桌面/test$ nasm -f elf64 test.asm -o test.o dontla@dontla-virtual-machine:~/桌面/test$ gcc -m64 test.o -o test /usr/bin/ld: test.o: relocation R_X86_64_32S against `.data' can not be used when making a PIE object; recompile with -fPIE collect2: error: ld returned 1 exit status

解决办法:
添加-no-pie指令

gcc -m64 test.o -o test -no-pie

结果:

参考文章:relocation R_X86_64_32S against `.data’ can not be used when making a shared object; recompile with -fPIC with gcc

总结

以上是生活随笔为你收集整理的relocation R_X86_64_32S against `.data‘ can not be used when making a PIE object; recompile with -fP的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。