gnu ld链接整个目标文件还是只链接所需的函数?

Vor*_*rac 4 ld static-libraries avr-gcc

我们有一个库和一个可执行文件,它与lib 静态链接.我们希望最小化最终可执行文件的程序空间.

根据avr-libc的文档:

链接器链接在函数所在的整个对象模块中

另一方面,我的同事们一致认为,在某些过程中,链接器会丢弃任何未使用的函数.

那么谁是正确的还是我误解了什么?整个gcc的答案是否一致,还是我们只在这里讨论avr端口?

Nik*_* C. 8

除非你告诉它,它不执行死代码剥离.为此,您需要使用以下内容编译所有内容:

-fdata-sections -ffunction-sections

为了标记所有数据和功能.当与GCC链接时,您需要通过:

-Wl,--gc-sections

为了垃圾收集所有未使用的部分.