在我的ARM项目中,我使用以下代码来构建无操作系统的应用程序二进制文件:
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平台上,同样的方法,我发现:如果我不使用这两个选项,输出是正常的,但是如果我使用这些选项作为arm平台,输出文件将是0字节。
发布于 2014-07-07 16:26:12
-Os -ffunction-sections -fdata-sections和--gc-sections应该可以在x86系统上工作。您确定您的程序和链接器脚本适用于x86吗?由于您的程序是为裸机ARM设计的,因此它可能没有用于x86操作系统的入口点,如果没有入口点,则所有内容都会被--gc-sections选项清除。
顺便说一句,你的“问题”实际上没有包含任何问题。
https://stackoverflow.com/questions/24584580
复制相似问题