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...