编译过程中数组过大.main.o:在函数‘MAIN__’中: main.f:(.text+0x1f): 截断重寻址至相符: R_X86_64_PC32 针对在 make[1]: ***

在Linux系统中学习开源软件时,如果遇到编译错误,可能是由于内存超过2G导致的。为了解决这个问题,可以添加编译选项-mcmodel=medium或-mcmodel=large来调整静态数组的大小限制。这通常需要在Makefile中的CFLAGS变量后添加该选项,然后重新执行make命令,即可避免编译时的重定位错误。
摘要由CSDN通过智能技术生成

最近在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博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值