首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码大小翻倍时,与GCC ARM嵌入式编译?

代码大小翻倍时,与GCC ARM嵌入式编译?
EN

Stack Overflow用户
提问于 2015-09-08 20:44:34
回答 2查看 1.3K关注 0票数 3

我刚刚将一个STM32微控制器项目从Keil uVision (使用Keil ARM编译器)移植到CooCox CoIDE (使用GCC ARM嵌入式编译器)。

问题是,与Keil uVision相比,使用GCC在CoIDE中编译时,代码大小是两倍。

这怎么可能呢?我能做什么?

Keil中的代码大小: 54632b (.text) CoIDE中的代码大小: 100844b (.text)

GCC编译器标志:

代码语言:javascript
复制
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -g2 -Wl,-Map=project.map -Os 
-Wl,--gc-sections -Wl,-TC:\arm-gcc-link.ld -g -o project.elf -L -lm

我怀疑CoIDE和GCC编译了很多函数和文件,这些函数和文件存在于项目中,但(还没有)使用。它有没有可能编译整个文件,即使我只使用了20个函数中的1个?(即使我有-Os)..

EN

回答 2

Stack Overflow用户

发布于 2015-09-08 20:56:09

根据您提供的信息,很难说哪些文件是在最终的二进制文件中编译/链接的。如果您没有明确指定要编译的文件,或者没有使用自己的Makefile,我想它会获取它在您的项目中找到的所有C文件。

但是从您给出的编译器选项来看,如果您没有以下编译器标志:-ffunction-sections -fdata-sections,那么链接器标志--gc-sections就不会有太多的垃圾。尝试添加这些选项,以便在链接时剥离所有未使用的函数和数据。

票数 1
EN

Stack Overflow用户

发布于 2017-03-09 17:18:48

由于这个问题是用C++标记的,我想知道您是否愿意禁用异常和RTTI。这些需要相当多的代码。将-fno-exceptions -fno-rtti添加到链接器标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32458220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档