gcc編譯基礎

2021-10-22 21:36:20 字數 868 閱讀 2079

1.源程式編譯過程:

預處理:gcc -e *.c -o *.i

編譯:gcc -s *.i -o *.s

彙編:gcc -c *.s -o *.o

頭檔案目錄指定--------  -i+path

編譯過程中指定巨集------ -d + name

程式優化----------- -o -o2 -o3

輸出警告---------- -wall

帶除錯資訊------- -g(用於gdb除錯)

指定靜態庫路徑------- -l+靜態庫路徑

指定使用庫的名稱----- -l + name

生成與位置無關的**---- -fpic(用於動態庫生成)

生成動態庫-------- -shared

nm 檢視動態庫靜態庫中的符號和型別

ldd 檢視程式依賴

3.靜態庫

(1)編譯原始檔生成*.o檔案

(2)使用ar將*.o檔案進行打包

ar rcs lib*.a *.o`

(3)靜態庫優缺點:無需提供庫,載入庫速度較快,目標檔案較大,庫改變需重新編譯目標檔案。

4.動態庫

(1) gcc -fpic -c *.c -o .o

(2) gcc -shared lib.so *.o

(3) 將動態庫所在路徑加入ld_library_path中或者將路徑加入聯結器配置檔案中(/etc/ld.so.config)然後執行sudo ldconfig -v進行更新。

C語言基礎 gcc編譯

ubuntu編譯c與c 檔案環境配置sudo apt install gcc sudo apt install g 驗證環境cd usr bin ls gcc ls g 通過gcc編譯c檔案gcc address filename.c o address file ubuntu a.out file...

linux程式設計基礎 GCC程式編譯選項

1,o output filename 不加 o 預設 gcc filename 生成 a.out eg gcc hello.c hello 生成 a.out gcc o hello.c hello 生成 hello 2 c 只編譯 不連線成為可執行檔案 eg gcc c hello.c 生成 he...

C語言基礎 GCC編譯器

預處理 pre processing 編譯 compiling 彙編 assembling 鏈結 linking 編譯器通過程式的副檔名來分辯編寫源程式所用的語言。由於不同的程式所需要執行編譯的步驟是不同的,因此gcc根據不同的字尾名對它們進行相應處理。後 綴 名 所對應的語言 編 譯 流 程 cc...