日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编译时“-nostdlib”的使用

發布時間:2025/6/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编译时“-nostdlib”的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文轉載于:《ARM-LINUX-GCC -NOSTDLIB》http://blog.chinaunix.net/uid-26739173-id-3154722.html

在韋東山的mmu實驗的 Makefile 中出現:
?

arm-linux-ld: firtst has both ordered [`.ARM.exidx' in init.o] and unordered [`.ARM.extab' in init.o] sections arm-linux-ld: final link failed: Bad value

此常見的錯誤的原因是: 編譯時沒有加上選項(-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”的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。