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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

gcc ------ 编译与链接选项及CFLAGS、LDFLAGS、LIBS

發布時間:2024/3/13 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gcc ------ 编译与链接选项及CFLAGS、LDFLAGS、LIBS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gcc ------ 編譯與鏈接選項及CFLAGS、LDFLAGS、LIBS
GCC手冊:https://gcc.gnu.org/onlinedocs/
GCC編譯選項CFLAGS參數
選項 說明
-c 用于把源碼文件編譯成 .o 對象文件,不進行鏈接,所以不產生可執行文件
-o 用于連接生成可執行文件,在其后可以指定輸出文件的名稱
-g 用于在生成的目標文件中,添加調試信息,可以使用GDB進行調試
-Idir 用于把新目錄添加到include路徑上,可以使用相對和絕對路徑,“-I.”、“-I./include”、“-I/opt/include”
-Wall 生成常見的所有告警信息,且停止編譯,具體是哪些告警信息,請參見GCC手冊,一般用這個足矣!
-w 關閉所有告警信息
-O 表示編譯優化選項,其后可跟優化等級0\1\2\3,默認是0,不優化
-fPIC 用于生成位置無關的代碼
-v (在標準錯誤)顯示執行編譯階段的命令,同時顯示編譯器驅動程序,預處理器,編譯器的版本號
-D XXX 添加宏定義,對程序進行條件編譯
-fmessage-length=n Try to format error messages so that they fit on lines of about n characters. If n is zero, then no line-wrapping is done; each error message appears on a single line. This is the default for all front ends.

GCC鏈接選項LDFLAGS參數
選項 說明
-lxxx -l后面緊接著庫名,鏈接時在標準搜索目錄中尋找庫文件,搜索名為libxxx.a 或 libxxx.so
-Ldir 用于把新目錄添加到庫搜索路徑上,可以使用相對和絕對路徑,“-L.”、“-L./include”、“-L/opt/include”
gcc -Wl,option 把選項 option 傳遞給連接器,如果 option 中含有逗號,就在逗號處分割成多個選項
-static 使用靜態庫鏈接生成目標文件,避免使用共享庫,生成目標文件會比使用動態鏈接庫大
-s 從可執行文件中刪除符號表和重定位信息,不能再用GDB調試可執行文件
LIBS
LDFLAGS是選項,LIBS是要鏈接的庫。LDFLAGS告訴鏈接器從哪里尋找庫文件,LIBS告訴鏈接器要鏈接哪些庫文件。

例子如下:

LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib

LIBS = -lmysqlclient -liconv

LDFLAGS指定-L雖然能讓鏈接器找到庫進行鏈接,但是運行時鏈接器卻找不到這個庫,如果要讓軟件運行時庫文件的路徑也得到擴展,那么我們需要增加這兩個庫給"-Wl,R"

LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib

如果在執行./configure以前設置環境變量export LDFLAGS=“-L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib” ,注意設置環境變量等號兩邊不可以有空格,而且要加上引號哦(shell的用法)。那么執行configure以后,Makefile將會設置這個選項, 鏈接時會有這個參數,編譯出來的可執行程序的庫文件搜索路徑就得到擴展了。

總結

以上是生活随笔為你收集整理的gcc ------ 编译与链接选项及CFLAGS、LDFLAGS、LIBS的全部內容,希望文章能夠幫你解決所遇到的問題。

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