1
在我的ARM項目,我用以下命令構建操作系統更少的應用程序二進制:關於-ffunction截面-fdata截面和--gc截面選項
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字節的輸出就是問題。我重新定義了入口點,它起作用。 –
但我在x86 gcc中發現了另一個問題。如果我使用-Os選項,則生成的二進制文件運行異常。如果我不添加-Os選項,則輸出二進制大小較大,但運行正常。你遇到過這樣的問題嗎?有空的時候我會調試一下。 –
我確實遇到過這樣的問題,它並不總是相同的原因,所以我在這裏幫不了你,但它通常與C未定義的行爲(C中有很多未定義的行爲)有關,這可能會隨着優化級別而改變。 – Jacen