1:源程式的編譯
gcc -o hello hello.c
gcc表示我們使用gcc來編譯我們的源程式,-o選項表示我們要求編譯器給我們輸出的可執行檔名為hello
-o選項表示我們要求輸出的可執行檔名。-c選項表示我們只要求編譯器輸出目標**,而不必要輸出可執行檔案。-g選項表示
我們要求編譯器在編譯的時候提供我們以後對程式進行除錯的資訊。(具體情況參照gcc幫組文件)
2:makefile的編寫
eg.makefile
#這是乙個程式的makefile檔案
main: main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o main.c mytool1.h mytoo2.h
gcc -c main.c
mytool1.o: mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o: mytool2.c mytool2.h
gcc -c mytool2.c
makefile的編寫方法:
#開始的行是注釋行,makefile中最重要的描述檔案的依賴關係的說明,一般的格式是:
target components
tab rule
第一行表示的是依賴關係,第二行是規則。
main: main.o mytool1.o mytool2.o 表示我們的目標(target)main的依賴物件(components)是main.o mytool1.o mytool2.o
當依賴的物件在目標修改後修改的話,就要去執行規則一行所指定的命令,就像我們的上面makefile所說的要
執行gcc -o main main.o mytool1.o mytool2.o
注意規則一行中的tab表示那裡是乙個tab鍵
makefile有三個非常有用的變數,分別是$@, $^, $< 代表的意義分別是:
$@--目標檔案, $^--所有的依賴檔案, $<--第乙個依賴檔案
如果我們使用上面三個變數,那麼我們可以簡化我們的makefile檔案為
#這是簡化後的makefile
main: main.o mytool1.o mytool2.o
gcc -o $@ $^
main.o main.c mytool1.h mytoo2.h
gcc -c $<
mytool1.o: mytool1.c mytool1.h
gcc -c $<
mytool2.o: mytool2.c mytool2.h
gcc -c $<
乙個makefile的預設規則
..c.o:
gcc -c $<
這個規則表示所有的.o檔案都是依賴於相應的.c檔案的。例如mytool.o依賴於mytool.c
這樣makefile還可以變為:
#這是再一次簡化後的makefile
main: main.o mytool1.o mytool2.o
gcc -o $@ $^
main.o main.c mytool1.h mytoo2.h
gcc -c $<
..c.o:
gcc -c $<
3:程式庫的鏈結
程式中包括其他標頭檔案如
在linux下,為了使用數學函式,我們必須和數學庫鏈結,為此我們要加入-lm選項。gcc -o temp temp.c -lm
這樣才能正確的編譯。
gcc編譯器會子總去鏈結一些常用庫,如
有時候我們在編譯程式的時候還要指定庫德路徑,這個時候我們要用的編譯器的-l選項指定路徑。比如說我們有乙個庫在
/home/lcl/mylib下,這樣我們編譯的時候還要加上-l/home/lcl/mylib。對於一些標準庫來說,我們沒有必要指出路徑,只要它們在預設
的庫德路徑下就可以了。系統的預設庫德路徑/lib/ usr/lib /usr/local/lib在這三個路徑下面的庫,我們可以不指定路徑。
4:程式的除錯
最常用的除錯軟體是gdb,如果想在圖形介面下除錯程式,那麼可以選擇xxgdb。記得要在編譯的時候加入-g 選型,可以檢視gdb的幫組文
件。現在ide環境裡面已經自帶了偵錯程式了。
5:標頭檔案和系統求組
man function 系統就會輸出該函式的詳細解釋和這個函式所在的標頭檔案
man 2 function 2表示我們用的是function這個函式是系統呼叫函式,
我們常用的是3表示函式是c的庫函式。
(man是我們的最好助手)
Linux下C語言程式設計基礎知識
1.源程式的編譯 在linux下面,如果要編譯乙個c語言源程式,我們要使用gnu的gcc編譯器.下面我們以乙個例項來說明如何使用gcc編譯器.假設我們有下面乙個非常簡單的源程式 hello.c int main int argc,char argv 要編譯這個程式,我們只要在命令列下執行 gcc o...
Linux下C語言程式設計基礎知識
1.源程式的編譯 在linux下面,如果要編譯乙個c語言源程式,我們要使用gnu的gcc編譯器.下面我們以乙個例項來說明如何使用gcc編譯器.假設我們有下面乙個非常簡單的源程式 hello.c int main int argc,char argv 要編譯這個程式,我們只要在命令列下執行 gcc o...
Linux下C語言程式設計基礎知識
linuxsir 1.源程式的編譯 在linux下面,如果要編譯乙個c語言源程式,我們要使用gnu的gcc編譯器.下面我們以乙個例項來說明如何使用gcc編譯器.假設我們有下面乙個非常簡單的源程式 hello.c int main int argc,char argv 要編譯這個程式,我們只要在命令列...