嵌入式入門必看:用幾張圖輕松看懂GCC!
GCC程序編譯過程
GCC常用后綴名
GCC使用方法
最基礎(chǔ)也是最高端的方法
Linux環(huán)境下man gcc
命令查看幫助信息
# 在這里列舉man的使用方法
回車 下一行
page up 上一行
page down 下一行
home[方向鍵左]第一頁
end[方向鍵右] 最后一頁
空格 下一頁
b 上一頁
q 退出
/string 從上往下搜索字符串string
?string 從下往上搜索字符串string
n 下一個搜索匹配項
N 上一個搜索匹配項
GCC參數(shù)匯總
GCC常用參數(shù)
編譯過程參數(shù)
參數(shù) | 作用 |
---|---|
-c | 只編譯不鏈接,生成目標文件 .o |
-S | 只編譯不匯編,生成匯編代碼 |
-E | 只預(yù)編譯 |
-g | 包含調(diào)試信息 |
-o 文件名 | 指定輸出目標文件 |
-I 路徑名 | 搜索頭文件路徑 |
庫選項參數(shù)
linux下靜態(tài)鏈接庫和動態(tài)鏈接庫格式
# 靜態(tài)鏈接庫
.a [libname.a]
# 動態(tài)鏈接庫
.so [libname.so[主版本號.次版本號.發(fā)行號]]
例如 libgupnp-dlna-gst-2.0.so.3.0.0
在Linux系統(tǒng)中:
頭文件存放路徑一般為/usr/include
庫文件存放路徑一般為/usr/lib
參數(shù) | 作用 |
---|---|
-static | 靜態(tài)編譯 |
-shared | 生成動態(tài)庫文件 進行的動態(tài)編譯 |
-L 路徑名 | 庫文件搜索中添加路徑 |
-fPIC | 生成使用相對位置無關(guān)碼的目標代碼 |
默認情況下的編譯為動態(tài)鏈接
編譯靜態(tài)鏈接庫
-
先生成目標文件 .o -
ar crv [*.a] [*.o]
-
調(diào)用靜態(tài)鏈接庫 gcc -o [file.c] -L [file.a]
編譯動態(tài)鏈接庫
-
生成位置無關(guān)目標代碼 gcc -fPIC -c [file.c]
-
生成動態(tài)鏈接庫 gcc -shared -o [*.so] [*.o]
-
調(diào)用動態(tài)鏈接庫 gcc -o [file] -L [file.so]
-
為了使程序運行時加載動態(tài)鏈接庫,將動態(tài)庫拷貝到 /usr/lib
目錄下
警告選項
參數(shù) | 作用 |
---|---|
-w | 關(guān)閉所有警告 |
-Wall | 發(fā)出gcc提供的所有有用警告 |
- pedantic | 發(fā)出ansic的所有警告 |
優(yōu)化選項
參數(shù) | 作用 |
---|---|
-O 優(yōu)化等級 | 優(yōu)化等級,一般只是最終發(fā)布的時候才用 |
本文授權(quán)轉(zhuǎn)載自公眾號“于宙”,作者:yz001
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!