我们有一个库和一个可执行文件,它将静态链接到lib。我们希望最小化最终可执行文件的程序空间。
根据avr-libc的文档:
the linker links in THE ENTIRE OBJECT MODULE in which the function is located
另一方面,我的同事们一致认为,在某些过程中,链接器会丢弃任何未使用的函数。
那么谁是正确的还是我误解了什么?整个gcc的答案是否一致,还是我们只在这里讨论avr端口?
答案 0 :(得分:7)
除非你告诉它,它不会执行死代码剥离。为此,您需要使用以下命令编译所有内容:
-fdata-sections -ffunction-sections
以标记所有数据和功能。当与GCC联系时,您需要通过:
-Wl,--gc-sections
为了垃圾收集所有未使用的部分。