gcc编译器错误:/usr/bin/ld文件夹:gfx.o:在生成PIE对象时,不能使用针对'.rodata'的重定位R_X86_64_32;使用-fPIE重新编译

hc8w905p  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(475)

错误如下:

/usr/bin/ld: gfx.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
make: *** [Makefile:4: project] Error 1

当我添加-fPIC-fPIE时,没有任何变化。我知道gfx.o库可以工作,因为它以前可以工作,并且当我在服务器上使用ssh时仍然可以工作。
制作文件如下:

project: project.c
  gcc project.c gfx.o -lx11 -lm -fPIE -o -project
clean:
  rm project

我试着在makefile中使用-fPIE-fPIC。我还treid卸载和重新安装gcc和binutills,但没有任何效果。

nlejzf6q

nlejzf6q1#

我发现把-no-pie放在Makefile中可以解决这个问题。我不知道是否有更持久和广泛的修复方法,但它确实有效。

相关问题