[假設源程式檔名為test.c]
選項 -e:
用法:#gcc -e test.c -o test.i
作用:將test.c預處理輸出test.i檔案。
選項 -s:
用法:#gcc -s test.i
作用:將預處理輸出檔案test.i彙編成test.s檔案。
選項 -c:
用法:#gcc -c test.s
作用:將彙編輸出檔案test.s編譯輸出test.o檔案。
選項-o:
用法:#gcc -o1 test.c -o test
作用:使用編譯優化級別1編譯程式。級別為1~3,級別越大優化效果越好,但編譯時間越長。
如果有多個原始檔,基本上有兩種編譯方法:
[假設有兩個原始檔為test.c和testfun.c]
1.2.1 分別編譯各個原始檔,之後對編譯後輸出的目標檔案鏈結。
用法:#gcc -c testfun.c //將testfun.c編譯成testfun.o
#gcc -c test.c //將test.c編譯成test.o
#gcc -o testfun.o test.o -o test //將testfun.o和test.o鏈結成test
以上兩種方法相比較,第一中方法編譯時需要所有檔案重新編譯,而第二種方法可以只重新編譯修改的檔案,未修改的檔案不用重新編譯。
庫檔案連線開發軟體時,完全不使用第三方函式庫的情況是比較少見的,通常來講都需要借助許多函式庫的支援才能夠完成相應的功能。從程式設計師的角度看,函式庫實際上就是一些標頭檔案(.h)和庫檔案(so、或lib、dll)的集合。雖然linux下的大多數函式都預設將標頭檔案放到/usr/include/目錄下,而庫檔案則放到/usr/lib/目錄下;windows所使用的庫檔案主要放在visual stido的目錄下的include和lib,以及系統資料夾下。但也有的時候,我們要用的庫不再這些目錄下,所以gcc在編譯時必須用自己的辦法來查詢所需要的標頭檔案和庫檔案。
ld會去找gcc命令中的引數-l
再找gcc的環境變數library_path
再找內定目錄 /lib /usr/lib /usr/local/lib 這是當初compile gcc時寫在程式內的
動態鏈結時、執行時搜尋路徑順序:
編譯目標**時指定的動態庫搜尋路徑
環境變數ld_library_path指定的動態庫搜尋路徑
配置檔案/etc/ld.so.conf中指定的動態庫搜尋路徑
預設的動態庫搜尋路徑/lib
預設的動態庫搜尋路徑/usr/lib
Linux基礎 gcc工具的使用
我們在linux下寫好c語言原始檔test.c 然後執行gcc test.c o test把原始檔test.c編譯存為可執行檔案test 然後用.test執行程式test 注意 1 原始檔和目標檔案位置可以互換 2 目標檔案可省略,gcc預設生成可執行檔案為a.out 雖然我們使用gcc test....
gcc程式設計
gcc程式設計的過程 gcc e main.c o main.i 預處理,o 定義生成的檔名 gcc s main.c o main.s 編譯 gcc c main.c o main.o 彙編 gcc main.o o hello 鏈結 生成可執行檔案 通常我們在gcc程式設計的時候,直接使用 gc...
gcc 引數 gcc編譯工具簡介
編譯的過程是乙個語言轉換的過程,由人能看懂的程式語言轉換為機器能看懂的二進位制語言。yaos的開發過程中,我們選擇gcc作為這個轉換器。我使用的系統是macos ak 2 yaos akilis uname adarwin ak 2.local 19.3.0 darwin kernel versio...