米尔科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

KEIL MDK中国版如何避免未调用的库函数链接到目标代码中?

问题类别: > 浏览次数:5740
发布日期:2012/4/23 17:07:08 文章来源:米尔科技
回复日期:2020/12/20 9:58:44

环境说明

KEIL MDK中国版3.05 及以上

分析描述

项目从IAR转到RealView MDK中国版发现HEX文件大了很多,所有未调用的函数都链接进去了(添加的库文件,其中很多函数都没用),有没有什么好办法。

问题解答

      问题分析:
      在新版的MDK编译和链接工具中加入了如下功能:
      1、链接器的反馈:
      链接器会输出一系列的未使用的函数
      armlink --feedback unused.txt …
      2、编译器会使用这些信息:
      armcc   --feedback unused.txt …
      从而,每个在反馈文件中列出的函数都会被单独编译为一个ELF段,从而可以在接下来的链接阶段被删除.

      详细图解如下:

      链接图解.rar

      问题解答:

      可以通过设置Options for Target的C/C++选项中解决.

      操作步骤:打开工程设置选项

      Options for Target---C/C++项---把下面的One Elf Section per Function选上,然后重新编译就可以了