【GCC编译优化系列】这种让人看不懂的multiple-definition真的有点让人头疼(RT-Thread技术论坛优秀文章)

文章目录

  • 1 写在前面
  • 2 问题描述
  • 3 场景复现
  • 4 深入分析
    • 4.1 可能性分析
    • 4.2 分析map文件
    • 4.3 扒一扒基础语法
    • 4.4 GCC的版本差异
      • 4.4.1 对比map文件和汇编代码
      • 4.4.2 如何查看GCC默认使用的编译选项
      • 4.4.3 对比GCC的默认使能的编译选项
      • 4.4.4 得出结论
  • 5 修复验证
    • 5.1 问题修复
    • 5.2 问题验证
  • 6 经验总结
  • 7 参考链接
  • 8 更多分享


1 写在前面

有印象的朋友应该记得我之前写过一篇 关于GCC编译报错及对应解决办法,在该文的 3.5.3 章节有提到几种很典型的 multiple-definition 链接错误,也简要分析了其出现问题的原因及对应解决方法。

multiple-definition 在GCC编译报错里面,它的报错本质是 重复定义,可能是函数重复定义,也可能是变量重复定义。

但今天我要介绍的这个 multiple-definition 跟常规遇到的还不太一样,否则这个问题就不值得我写篇文章来做记录了,详细请看下文。

2 问题描述

事情是这样的,前几天一个同事给我报了一个我们SDK的问题,我想着加快复现问题,于是我找了他要他的应用代码,拿到我的编译环境环境来编译复现。

结果,好巧不巧,拿他代码一编译,居然给我报错了,而且这个报错把我整不会了!朋友,请看ÿ

你可能感兴趣的:(嵌入式物联网开发进阶,gcc,重复定义,编译报错)