关于-ffunction-sections -fdata-sections和--gc-sections选项

时间:2014-07-05 08:39:19

标签: gcc x86 arm

在我的ARM项目中,我使用以下来构建无os应用程序二进制文件:

arm-linux-gcc -Os -ffunction-sections -fdata-sections -o boot.o boot.S
arm-linux-gcc -Os -ffunction-sections -fdata-sections -o main.o main.c
arm-linux-ld -T link.lds --gc-sections -o target.bin boot.o main.o

这些工作正常。因为如果我删除" -ffunction-sections"," -fdata-sections"和" - gc-sections"选项,target.bin文件大小将增加近两倍..

但是在x86平台上,同样的方法,我发现: 如果我不使用那些gcc和ld选项,则输出正常,但如果我将这些选项用作arm平台,则输出文件将为0字节。

1 个答案:

答案 0 :(得分:2)

-Os -ffunction-sections -fdata-sections--gc-sections应该适用于x86系统。您确定您的程序和链接描述文件适合x86吗?由于您的程序适用于裸机ARM,因此它可能没有x86操作系统的入口点,如果没有入口点,则所有内容都由--gc-sections选项进行操作。

顺便说一下,你的问题"实际上没有问题。