gcc编译问题:ELF section name out of range或xxxxdebugobjtem has a corrupt section with a size完美解决
<p style="text-indent: 0em;">开发环境:<span style="color: rgb(0, 112, 192);">Win7 64位</span><br/>开发板:<span style="color: rgb(0, 112, 192);">LPC55S69</span><br/>交叉编译工具:<span style="color: rgb(0, 112, 192);">2018-q4</span><br/></p><p class="artical_littlestyle1">1、问题复现</p><p style="text-indent: 2em;">最近在开发LPC55S69的SDK,由于这个芯片采用的是Cortex-M33内核,因此所用到的交叉编译器也是当前比较新的<span style="color: rgb(0, 112, 192);">gcc-arm-none-eabi-8-2018-q4-major-win32</span>。<br/></p><p style="text-indent: 2em;">在开发过程中,编译自己的SDK时会出现如下问题:<br/><span style="color: rgb(255, 0, 0);">ld.exe: warning: xxxxdebugobjtem has a corrupt section with a size(a0dba) larger than the file size<br/>ld.exe: error: xxxxdebugobjtem : ELF section name out of range</span><br/></p><p style="text-indent: 2em;">但是我在编译NXP提供的官方demo时却没有这个问题。最开始出现这个问题的时候,我检查自己的SDK配置是否有问题,始终没有找到问题所在。后来上网搜索相关问题也没有找到这类问题的说明更不要谈解决方法了,再后来就是通过其他搜索引擎查找问题,嘿,几经查找,还终于让我找到了如何解决这个问题的方法,当然了,目前这个问题也完美的解决了。<br/></p><p class="artical_littlestyle2">2、问题产生原因</p><p style="text-indent: 2em;">好了,来谈谈问题的产生吧:其实这个问题的出现是交叉编译器<span style="color: rgb(0, 112, 192);">gcc-arm-none-eabi-8-2018-q4-major-win32</span>的bug,而且这个bug只有在同时使用-flto和-g/-g1/-g3编译条件时才会出现上述问题,并且这个问题也只有在Windows平台才会出现。<span style="color: rgb(255, 0, 0);">使用<span style="color: rgb(0, 112, 192);">gcc-arm-none-eabi-8-2018-q4-major-win32</span>无论是编译LPC55S69或者是其它ARM平台的代码都会出现这个问题</span>。<br/></p><p class="artical_littlestyle3">3、解决办法</p><p style="text-indent: 0em;">方法一:</p><p style="text-indent: 2em;">由于问题是由<span style="color: rgb(0, 112, 192);">gcc-arm-none-eabi-8-2018-q4-major-win32</span>这个版本的交叉编译器产生的,那么解决方法自然是更换其它版本的交叉编译器了,或者使用版本低一点的交叉编译器,或者使用版本高一点的交叉编译器都可以解决这个问题。<br/></p><p style="text-indent: 2em;">我这里使用当前(2019.09.05)最新的交叉编译器<span style="color: rgb(0, 112, 192);">gcc-arm-none-eabi-8-2019-q3-update-win32</span>,然后编译我的SDK,嘿,编译成功,perfect!</p><p style="text-indent: 0em;">方法二:<br/></p><p style="text-indent: 2em;">当然了,如果不想更换交叉编译器,这里也可以根据自己的实际情况,去掉-flto或者-g/-g1/-g3编译选项,这样也算是一种解决问题的方法</p><p style="text-indent: 2em;">原来编译器也是信不过的,遇到问题还是要好好思考,既考虑自己是否有问题,也要考虑工具是否有问题。好了,问题完美解决,如果觉得这篇文章解决了各位的问题,点个赞或者关注下博主呀,哈哈!<br/>这里附上交叉编译器针对这个bug的提交与说明,大家可以了解下(当然了文章是全英文):<br/><a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89183" target="_blank">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89183</a><br/><a href="https://bugs.launchpad.net/gcc-arm-embedded/+bug/1814397" target="_blank">https://bugs.launchpad.net/gcc-arm-embedded/+bug/1814397</a><br/></p>
你可能也喜欢:
暂无评论,要不要来个沙发
发表评论
JLink V9掉固件修复(灯不亮) 3Zephyr笔记2 - 在STM32F429上运行HelloWorld 2计算NandFlash要传入的行地址和列地址 1Linux MMC子系统 - 6.eMMC 5.1工作模式-设备识别模式 0Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式 0Linux MMC子系统 - 4.eMMC 5.1常用命令说明(2) 0
标签云
Linux嵌入式实用技巧ARM内核学习问题集合CC++编程语言阅读笔记汇编Linux内核完全注释Windows驱动开发计算机基础ARM11ARMv7-ASTM32IDESublimeLinux内核学习eMMCMMC子系统Ubuntu操作系统OfficeVMWareAPUEgccRTOS中断漫游世界随笔感悟开发工具软件应用编程VsCodearmccarmclang编译器ZephyrSPIJLink网卡驱动安装各种芯片库函数NFSμCOS内核sambaFlashUnix命令与脚本输入法Linux内核设计与实现gitRIFFWAVJATGFTPar8161安装centos有线上网μCGUI字库工程建立右键菜单网络文件系统Firefox百度NTFS文件系统CodeBlocksCentOS数据结构算法PhotoShop51KeilQTUltraEditscanfglibc宏定义UIDGID优先级娱乐天地SourceInsight磁盘扇区总线I2CPDFBComparePythonI2SFPUMakefileSWDCPUARP软件推荐FileZilla