在我的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字节。
答案 0 :(得分:2)
-Os -ffunction-sections -fdata-sections
和--gc-sections
应该适用于x86系统。您确定您的程序和链接描述文件适合x86吗?由于您的程序适用于裸机ARM,因此它可能没有x86操作系统的入口点,如果没有入口点,则所有内容都由--gc-sections
选项进行操作。