Linux下C語言基礎知識

2021-05-22 13:22:38 字數 2294 閱讀 2263

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 要編譯這個程式,我們只要在命令列...