gcc编译问题:ELF section name out of range或xxxxdebugobjtem has a corrupt section with a size完美解决
 2019.09.05    |      Linux问题集合    |     AilsonJack    |     暂无评论    |     2121 views
By: Ailson Jack
Date: 2019-09-05
个人博客: http://www.only2fire.com/
<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>
欢迎关注博主的公众号呀,精彩内容随时掌握:
热情邀请仔细浏览下博客中的广告,万一有对自己有用或感兴趣的呢。◕ᴗ◕。。
如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^,当然了能够赞赏博主,那就非常感谢啦!
注: 转载请注明出处,谢谢!^_^
暂无评论,要不要来个沙发
发表评论

 
Copyright © 2015~2023  说好一起走   保留所有权利   |  百度统计  蜀ICP备15004292号