linux下使用gcc編譯執行C C 程式

2022-03-10 20:40:51 字數 1907 閱讀 8308

編譯c

首先,程式編譯過程有:

1.預處理(展開巨集,標頭檔案,檢查**是否有誤)

2.編譯(將.c轉為彙編**.s)

3.彙編(將彙編**.s轉為機器**.o)

4.鏈結(將所有機器**.o和庫檔案鏈結成乙個可執行程式)

一般編譯常常包括了:預處理,編譯,彙編

在linux系統中,編譯c使用gcc編譯器,如下:

gcc -o  out     in1.c    in2.c    //

gcc編譯以及鏈結(對in1檔案和in2檔案進行編譯生成out.bin檔案,「-o」:表示生成可執行檔案)

gcc -c in1.c in2.c -o out.o //

gcc編譯不鏈結(對in1檔案和in2檔案檔案進行編譯生成out.o檔案,

「-c」:表示只生成*.o檔案 第二個"-o":表示制定生成哪個.o檔案)

(若只對單個檔案編譯及鏈結,也可以直接輸入: gcc in.c, 系統預設編譯生成a.out可執行檔案)

若需要在arm板裡執行,就需要在linux系統中使用arm-linux-gcc交叉編譯才行:

arm-linux-gcc -o  out     in1.c    in2.c    //

gcc編譯以及鏈結(對in1檔案和in2檔案進行編譯生成out.bin檔案,「-o」:表示生成可執行檔案)

arm-linux-gcc -c in1.c in2.c -o out.o //

gcc編譯不鏈結(對in1檔案和in2檔案檔案進行編譯生成out.o檔案,

「-c」:表示只生成*.o檔案 第二個"-o":表示指定生成哪個.o檔案)

-i      //

表示新增標頭檔案位置

一般編譯程式時,說找到不到某個標頭檔案時,編譯時直接加上"-i  該頭檔案目錄",即可編譯ok

-l                     //

指定庫檔案,l後面緊跟庫檔案,比如數學庫:-lm,對應著libm.so檔案,只需要去掉lib和.so即可

編譯程式時,一般說找不到某函式定義時,說不定就是沒加庫檔案原因,比如找不到cos()函式定義,則編譯時直接加上"-lm"即可 

編譯c++

方法和上面類似,使用g++編譯器,只不過該編譯器會自動鏈結c++庫 

注意:若需要c++11標準,需要gcc 4.8以上

以編譯兩個c檔案(a.c和hello.c)為示例:

vi a.c//編輯a.c , 它將被hello.c呼叫,前提是這兩個檔案必須在同一目錄下

內容如下:

vi hello.c//編輯hello.c

內容如下:

gcc -o hello  hello.c  a.c//gcc編譯以及鏈結(對hello.c檔案和a.c檔案進行編譯生成hello.bin檔案,「-o」:表示生成可執行檔案)

./hello//執行hello.bin

效果如下所示:

Linux下使用gcc編譯和執行C程式的簡單操作

1.編輯c程式檔案,名字為main.c include int main void 2.編譯與執行 1 簡單直接的方式 如下命令會在當前目錄下生成a.out檔案,使用.a.out執行 gcc main.c main 2 分步驟 原始檔編譯為可執行檔案,生成main.o gcc c main.c 編譯...

ubuntu 下gcc的編譯執行

一些基本的操作 gcc test.c 將test.c預處理 彙編 編譯並鏈結形成可執行檔案test gcc test.c o test o用來指定輸出檔案的檔名 gcc e test.c o test.i 將test.c預處理輸出test.i檔案 gcc c test.s 將彙編輸出檔案test.s...

gcc下c c 程式編譯 執行命令

一 基本命令 c編譯 執行 gcc wall g o desktop test desktop test.c desktop test c 編譯 執行 g desktop c test.cpp o desktop c test.exe desktop c test.exe 注意具體目錄 二 新增警告...