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