我正在爲基於ARM-Cortex M3的設備編寫引導腳本。如果我編譯彙編程序引導腳本和C應用程序代碼,然後合併目標文件並將它們傳輸到我的設備,一切正常。GNU ld刪除部分
但是,如果我用ar
創建歸檔(libboot.a),並結合該存檔與C應用程序有一個問題:
我已經把啓動代碼段:
.section .boot, "ax"
.global _start
_start:
.word 0x10000800 /* Initial stack pointer (FIXME!) */
.word start
.word nmi_handler
.word hard_fault_handler
... etc ...
我發現ld
從最終的二進制文件中刪除(「boot」部分不可用)。這是非常自然的,因爲ld
不瞭解它,但它會導致設備無法正確引導。
所以我的問題是:強制包含此代碼的最佳方法是什麼?