AVR/GCC设置不链接未调用的函数
来源:互联网 发布:淘宝女装关键词排名 编辑:程序博客网 时间:2024/05/05 04:11
在AVR Studio4/5的AVR/GCC默认设置下,未调用的函数也会被link进最终的镜像,从而增大image的大小,这会浪费flash资源.
以下是如何在AVR Studio4/5设置,不把未调用的函数link进image.
方法是在complier命令中增加-ffunction-sections,linker命令中增加-Wl,--gc-sections.
-ffunction-sections:不用此参数时,.o里代码部分只有.text段;使用此参数,则会使每个函数单独成为一段,比如函数func1()成为.text.func1段,但对链接后代码大小没影响。
--gc-sections:这是avr-ld的参数,通过-Wl,<option>由gcc把option里的参数传递给avr-ld。它使得链接器ld链接时删除不用的段。
这样,因为每个函数自成一段(即可以看作函数=段),如果有某个函数未被任何函数/段调用,则ld不会链接它。
AVR Studio 4:
Edit Configuration Options – Custom Options – [All Files] – add -ffunction-sections
– [Linker Options] – add -Wl,--gc-sections
AVR Studio 5:
AVR/GNU compiler-Optimization: 选择Prepare functions for garbage collection(-ffunction-sections)
AVR/GNU linker-Optimization: 选择Garbage collect unused sections(-Wl,--gc-sections)
以下是如何在AVR Studio4/5设置,不把未调用的函数link进image.
方法是在complier命令中增加-ffunction-sections,linker命令中增加-Wl,--gc-sections.
-ffunction-sections:不用此参数时,.o里代码部分只有.text段;使用此参数,则会使每个函数单独成为一段,比如函数func1()成为.text.func1段,但对链接后代码大小没影响。
--gc-sections:这是avr-ld的参数,通过-Wl,<option>由gcc把option里的参数传递给avr-ld。它使得链接器ld链接时删除不用的段。
这样,因为每个函数自成一段(即可以看作函数=段),如果有某个函数未被任何函数/段调用,则ld不会链接它。
AVR Studio 4:
Edit Configuration Options – Custom Options – [All Files] – add -ffunction-sections
– [Linker Options] – add -Wl,--gc-sections
AVR Studio 5:
AVR/GNU compiler-Optimization: 选择Prepare functions for garbage collection(-ffunction-sections)
AVR/GNU linker-Optimization: 选择Garbage collect unused sections(-Wl,--gc-sections)
- AVR/GCC设置不链接未调用的函数
- AVR GCC 编译器调用规则
- GCC-AVR 编写中断服务函数的注意事项
- Avr-Gcc中关于delay函数的应用
- AVR-GCC中sprintf函数转换浮点数的方法
- gcc去除未用到的函数
- AVR/Atmel Studio延时函数没有被调用的问题
- AVR 中 delay 函数的调用注意事项!delay_ns delay_ms
- codeblocks中设置gcc的链接方式
- onConfigurationChanged 未调用不执行的问题
- gcc编译链接库并调用链接库的方法
- 调用系统设置的链接
- avr-gcc的EEPROM的api
- avr-gcc中关于delay延时函数的应用(原发于2007-11-16)
- avr-gcc中关于delay延时函数的应用修改版[ourdev]
- AVR-GCC里定义的API
- AVR-GCC里定义的API
- AVR-GCC的I/O端口API
- 如何使用JVM监控tomcat
- C#中为多线程变量提供原子操作的类Interlocked
- 软件架构设计---基于鲁棒图进行设计
- samba服务器设置
- 读写写ini文件
- AVR/GCC设置不链接未调用的函数
- 关于协方差矩阵的概念及意义
- linux常用命令
- android之helloworld详解
- Linux下为Android模拟器增加SD卡
- SCN<=>TIMESTAMP
- 网间通讯
- 网络编程笔记<4> 客户端 TCP IOCP
- java 指针的问题