1. 無選項編譯鏈結
用法:#gcc test.c
作用:將test.c預處理、彙編、編譯並鏈結形成可執行檔案。這裡未指定輸出檔案,預設輸出為a.out。
2. 選項 -o
用法:#gcc test.c -o test
作用:將test.c預處理、彙編、編譯並鏈結形成可執行檔案test。-o選項用來指定輸出檔案的檔名。
3. 選項 -e
用法:#gcc -e test.c -o test.i
作用:將test.c預處理輸出test.i檔案。
4. 選項 -s
用法:#gcc -s test.i
作用:將預處理輸出檔案test.i彙編成test.s檔案。
5. 選項 -c
用法:#gcc -c test.s
作用:將彙編輸出檔案test.s編譯輸出test.o檔案。
6. 無選項鏈結
用法:#gcc test.o -o test
作用:將編譯輸出檔案test.o鏈結成最終可執行檔案test。
7. 選項-o
用法:#gcc -o1 test.c -o test
作用:使用編譯優化級別1編譯程式。級別為1~3,級別越大優化效果越好,但編譯時間越長。
8. 多個檔案一起編譯
用法:#gcc testfun.c test.c -o test
作用:將testfun.c和test.c分別編譯後鏈結成test可執行檔案。
9. 分別編譯各個原始檔,之後對編譯後輸出的目標檔案鏈結。
用法:#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
二、gdb除錯工具
gcc -g test.c
gdb a.out 或者gdb進入,file a.out
(gdb)q 退出
(gdb)list(l) 檢視
(gdb)show listsize 顯示行數
(gdb)set listsize 設定行數
(gdb)break(b) 函式名 函式入口加斷點
(gdb)break(b) 行號 加斷點
(gdb)run(r) 開始執行程式
(gdb)info break 檢視斷點
(gdb)next(n)
(gdb)delete 刪除斷點
(gdb)continue 持續執行
三、庫
靜態庫:
1.編譯庫檔案
2.編譯:gcc -c add.c
3.生成庫:ar rsc libadd.a add.o //lib字首,add代表庫的名字,.a代表靜態庫
4.編譯呼叫庫的源程式:demo.c
5.執行:gcc demo.c -ladd -l.
動態庫:
1.編譯庫檔案
2.編譯:gcc -fpic -c add.c
3.生成動態庫:gcc -shared -o libadd.so add.o
4.編譯呼叫庫的源程式:demo.c
5.執行:gcc demo.c ./libadd.so
動態庫和靜態庫的區別:
1.字尾不一樣
2.使用靜態庫的時候,聯結器會找出程式中所需要的函式,然後將它們拷貝到可執行檔案中,呼叫一次拷貝一次,一旦鏈結成功後,靜態庫就不需要了。
動態庫,它是在執行的時候在程式內留下乙個標記,指明當程式執行時,首先載入這個庫。
3.靜態庫是在編譯的時候呼叫;
動態庫實在執行的時候呼叫。
4.靜態庫比動態庫大。
5.liunx中預設的是動態庫鏈結,如果是靜態庫鏈結的話:gcc -static demo.c
動態庫和靜態庫的特點
靜態庫:程式臃腫,難以公升級,但那是易於部署;
動態庫:和靜態庫相反。
★注意:
#incude <> 是在系統中查詢
#include 「「當前目錄下查詢,找不到去系統中找,仍就找不到,報錯。
inux系統下的Gcc的基本使用
http zhidao.baidu.com question 18243776.htmllinux系統下的gcc gnu c compiler 是gnu推出的功能強大 效能優越的多平台編譯器,是gnu的代表作品之一。gcc是可以在多種硬體平台上編譯出可執行程式的超級編譯器,其執行效率與一般的編譯器相...
gcc和gdb 的使用
筆記 gcc編譯器 熟練使用 1 gcc gnu compiler 是gnu推出的多平台編譯器,可將c c 源程式編譯連線程可執行檔案,支援以下字尾 1 c c語言源 2 h 程式所包含的標頭檔案 3 i 已經預處理過的c源 檔案 4 s 組合語言源 檔案 5 o 編譯後的目標檔案 2 gcc o ...
gcc和gdb的常用指令
命令 作用 o 將命令的執行結果寫入檔案中,預設為a.out e預處理操作,生成預處理檔案 s編譯操作,生成組合語言目標檔案 c彙編操作,生成可重定位目標檔案 i 將加入到頭檔案的搜尋目錄中,鏈結時在搜尋標準標頭檔案之前先在進行搜尋 l 將加入到庫檔案的搜尋目錄中,鏈結時在搜尋標準標頭檔案之前先在進...