編譯c
首先,程式編譯過程有:
1.預處理(展開巨集,標頭檔案,檢查**是否有誤)
2.編譯(將.c轉為彙編**.s)
3.彙編(將彙編**.s轉為機器**.o)
4.鏈結(將所有機器**.o和庫檔案鏈結成乙個可執行程式)
一般編譯常常包括了:預處理,編譯,彙編
在linux系統中,編譯c使用gcc編譯器,如下:
gcc -o out in1.c in2.c //(若只對單個檔案編譯及鏈結,也可以直接輸入: gcc in.c, 系統預設編譯生成a.out可執行檔案)gcc編譯以及鏈結(對in1檔案和in2檔案進行編譯生成out.bin檔案,「-o」:表示生成可執行檔案)
gcc -c in1.c in2.c -o out.o //
gcc編譯不鏈結(對in1檔案和in2檔案檔案進行編譯生成out.o檔案,
「-c」:表示只生成*.o檔案 第二個"-o":表示制定生成哪個.o檔案)
若需要在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 //編譯程式時,一般說找不到某函式定義時,說不定就是沒加庫檔案原因,比如找不到cos()函式定義,則編譯時直接加上"-lm"即可指定庫檔案,l後面緊跟庫檔案,比如數學庫:-lm,對應著libm.so檔案,只需要去掉lib和.so即可
編譯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 注意具體目錄 二 新增警告...