编译时“-nostdlib”的使用
生活随笔
收集整理的這篇文章主要介紹了
编译时“-nostdlib”的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文轉載于:《ARM-LINUX-GCC -NOSTDLIB》http://blog.chinaunix.net/uid-26739173-id-3154722.html
在韋東山的mmu實驗的 Makefile 中出現:
?
此常見的錯誤的原因是: 編譯時沒有加上選項(-nostdlib)
-nostdlib作用: 不連接系統標準啟動文件和標準庫文件,只把指定的文件傳遞給連接器。這個選項常用于編譯內核、bootloader等程序,它們不需要啟動文件、標準庫文件。
C語言程序執行的第一條指令。并不是main函數。生成一個C程序的可執行文件時編譯器通常會在我們的代碼上加上幾個被稱為啟動文件的代crt1.o,crti.o,crtend.o,crtn.o等,他們是標準庫文件。這些代碼設置C程序的堆棧等,然后調用main函數。他們依賴于操作系統,在裸板上無法執行,所以我們自己寫一個。
所以,我們自己寫的*.S匯編文件就是一個啟動文件,它設置好堆棧后調用main函數。因此,我們不需要系統自帶的啟動文件。 因此 我們只需修改其Makefile文件:
%.o:%.carm-linux-gcc -Wall -nostdlib -O2 -c -o $@ $<%.o:%.S arm-linux-gcc -Wall -nostdlib -O2 -c -o $@ $<再次make 就ok啦 。
總結
以上是生活随笔為你收集整理的编译时“-nostdlib”的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单链表的建立和打印
- 下一篇: C 关于unsigned int com