文章目錄
- (一)用gcc編譯C程式并運作
-
-
-
- 1.在終端中安裝gcc
- 2.用gcc編譯C程式
-
- (1)編寫一個hello.c檔案
-
- (2)編寫一個主程式檔案main1.c和子程式檔案sub1.c
-
-
- (二)在Windows平台編譯C程式并運作
- (三)使用Makefile編譯C程式并運作
(一)用gcc編譯C程式并運作
1.在終端中安裝gcc
- 輸入下列指令
sudo apt update
回車後輸入密碼後更新包清單
- 輸入下列指令安裝軟體包
sudo apt install build-essential
- 輸入”Y“後回車繼續
- 輸入以下指令驗證gcc編譯器是否安裝成功
gcc --version
如圖出現gcc 9.3.0即表示安裝成功!
2.用gcc編譯C程式
(1)編寫一個hello.c檔案
- 在Documents中打開終端
- 輸入
指令建立一個名為hello的檔案夾touch
touch hello.c
- 輸入
指令打開hello.c檔案nano
nano hello.c
- 寫入代碼後”ctrl s“儲存,然後退出
#include<stdio.h>
int main(void)
{
printf("HELLO WORLD\n");
return 0;
}
- 輸入以下指令将hello.c檔案進行預處理、彙編、編譯并連結形成可執行檔案hello,-o選項用來指定輸出檔案的檔案名。
gcc hello.c -o hello
- 輸入以下指令得到輸出結果(“.”代表目前目錄)
./hello
- 運作結果如下
(2)編寫一個主程式檔案main1.c和子程式檔案sub1.c
- 用上述方法建立一個檔案main1.c,并寫入程式然後儲存
#include"sub1.c"
int main()
{
int x=2,y=5;
printf("%.2f\n",x2x(x,y));
return 0;
}
- 用同樣的方法建立檔案sub1.c,并寫入程式然後儲存
#include<stdio.h>
float x2x(int x,int y)
{
float ans;
ans=(float)y/(float)x;
return ans;
}
- 輸入以下指令将main1.c檔案進行預處理、彙編、編譯并連結形成可執行檔案main1,然後得到輸出結果
(二)在Windows平台編譯C程式并運作
- 在vs2019上建立一個新.cpp檔案,命名為源,然後輸入代碼
//main1.c
#include<stdio.h>
#include"sub1.c"
float x2x(int x, int y);
int main(void)
{
int x = 2, y = 5;
printf("%.2f", x2x(x, y));
return 0;
}
- 再建立一個新.c檔案,命名為sub1,然後輸入代碼
//sub1.c
#include<stdio.h>
float x2x(int x, int y)
{
float ans;
ans = (float)y / (float)x;
return ans;
}
- 再進行本地調試,開始編譯執行代碼,結果如下
(三)使用Makefile編譯C程式并運作
- 輸入
指令建立一個txt檔案并命名為makefiletouch
touch makefile.txt
mv makefile.txt makefile
- 在makefile檔案中寫入以下代碼
//注意使用tab縮進
main1:main1.o //左邊的main1是目标檔案,目标檔案依賴于冒号右邊
gcc main1.o -o main1 //必須以tab開頭隔開
main1.o:main1.S
gcc -c main1.S -o main1.o
main1.S:main1.i
gcc -S main1.i -o main1.S
main1.i:main1.c
gcc -E main1.c -o main1.i
.PHONY: //僞目标标記,僞目标标記後的指令不會和目錄下檔案重複
//也就是說clean如果沒有僞目标标記的話,目錄下有一個clean的檔案
//make clean将不會正确執行
clean:
rm -rf main1.o main1.S main1.i main1
- 打開終端,輸入
指令得到可執行檔案main1;編譯後用make
指令進行清除make clean
make
make clean
- 結果如下
// 初次寫博(●ˇ∀ˇ●),請多多指教(ง •_•)ง