本文主要是介绍编译过程中数组过大.main.o:在函数‘MAIN__’中: main.f:(.text+0x1f): 截断重寻址至相符: R_X86_64_PC32 针对在 make[1]: ***,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在Linux系统下学习开源软件,在生成可执行文件前,需要对软件源码进行编译,遇到下面的问题,一些新手可能找不到修改FLAGS的位置。
查了一圈,发现是在编译时数组过大时出现的编译错误。
解决办法:
内存超过2G会出现问题。需要添加编译选项:-mcmodel
调整编译时的对静态数组要求的大小:-mcmodel=medium(中级) -mcmodel=large(高级)
编译选项具体修改位置:
打开当前Makefile文件,在你使用的编译器Flags后添加-mcmodel=medium
比如我使用的是gcc编译器,所以我们 就在CFLAGS后添加即可。保存退出后执行make编译命令,这时编译就不会再出现上面的问题了。
参考
GCC 编译错误 relocation truncated to fit: R_X86_64_32S against `.bss'_lisary_2017的博客-CSDN博客
这篇关于编译过程中数组过大.main.o:在函数‘MAIN__’中: main.f:(.text+0x1f): 截断重寻址至相符: R_X86_64_PC32 针对在 make[1]: ***的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!