GCC详解-gcc之-Wl选项
生活随笔
收集整理的這篇文章主要介紹了
GCC详解-gcc之-Wl选项
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、介紹
-Wl后面的東西是作為參數傳遞給鏈接器ld的。比如:
gcc -Wl,aaa,bbb,ccc
最后會被解釋為:
ld aaa bbb ccc
2、-Wl,-Map=xxx.txt 生成map文件
如下會生成map文件mymap.txt。
gcc -Wl,-Map=mymap.txt -g main.c -o main
3、?-Wl,-Bstatic 和 -Wl,-Bdynamic 指定鏈接動態庫或者靜態庫
-Wl,-Bstatic -laaa -lbbb -lccc -Wl,-Bdynamic -lddd -l ccc
-Wl,-Bstatic 后面的庫是靜態鏈接的;
-Wl,-Bdynamic 后面的都是動態鏈接的。
4、?-Wl,--as-needed和?-Wl,--no-as-needed
在生成可執行文件的時候,通過 -lxxx 選項指定需要鏈接的庫文件,連接器會在可執行文件的文件頭中會記錄下該庫的信息。
在可執行文件運行的時候,動態加載器會讀取文件頭信息,并加載所有的鏈接庫。
在這個過程中,如果用戶指定鏈接了一個毫不相關的庫,則這個庫在最終的可執行程序運行時也會被加載,如果類似這樣的不相關庫很多,會明顯拖慢程序啟動過程。
通過指定 -Wl,--as-needed 選項,鏈接過程中,鏈接器會檢查所有的依賴庫,沒有實際被引用的庫,不再寫入可執行文件頭。最終生成的可執行文件頭中包含的都是必要的鏈接庫信息。
-Wl,--no-as-needed 選項不會做這樣的檢查,會把用戶指定的鏈接庫完全寫入可執行文件中。
總結
以上是生活随笔為你收集整理的GCC详解-gcc之-Wl选项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 屏幕分辨率(QQVGA、QVGA、VGA
- 下一篇: Beosin成都链安发布在线EOS-ID