日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

  • 配置終端的C開發環境

在Ubuntu 終端系統中開發,需要依賴一些命令行工具,對比使用windows 下的IDE集成開發環境會有一些不同之處。

在linux 下一般使用gcc 編譯C 語言代碼,gcc 可以通過管理工具進行安裝,以Ubuntu 16.04為例

sudo apt-get install gcc

新建一個C 語言程序進行編譯演練,可以使用vim, 或者是touch命令來創建一個文件。

vim test.c / touch test.c
#include <stdio.h>
int main( )
{
		printf("study gccn");
  	return 0;
}

代碼編輯完成后,使用gcc 命令進行編譯

$ ls
test.c
$ gcc -o test test.c

-o 參數指定可執行程序名,test.c 是源碼文件,當編譯完成后,當前目錄下會出現一個可執行文件test

$ ls
test 			test.c

在命令行下,將可執行程序運行起來,看是否會輸出預期的內容:

$ ./test
study gcc
  • 多文件編譯

一般程序都是由多個文件組成,編譯多個文件程序,需要將所有源碼文件傳給編譯器。

以C語言為例,將test.c 拆解成兩個文件,創建test2.c

touch test2.c

#include <strdio.h>
 
void print_test( )
{
		printf("study gccn");  
}

test2.c 中定義一個函數,函數名為print_test, 用于輸出 "study gcc".

在test.c中直接調用print_test 即可:

test.c

void print_test( );
int main( )
{
 		print_test();
  	return 0;
}

按照以下步驟,編譯由兩個文件組成的程序:

gcc -o test test.c test2.c
  • 解析編譯流程

程序編譯可以進一步分成為編譯(Compile) 和鏈接(Link) 這兩個階段

我們可以分階段編譯test.c, test2.c,源文件如下:

$ ls
test.c		test2.c

編譯test2.c文件, 生成test2.o 對象文件:

$ gcc -c test2.c
$ ls
test2.c   test2.o   test.c

編譯test.c文件,生成test.o 對象文件:

$ gcc -c test.c
$ ls
test2.c  test2.o  test.c  test.o

最后鏈接兩個對象文件,生成可執行程序:

$ gcc -o test test.o test2.o
$ ./test
stduy gcc
  • 關于分階段編譯

分階段編譯的最大好處是, 可以進行部分編譯 ==> 只是編譯有變更的部分

在上面的例子中,test.c 有變更,而test2.c 沒有變更,那么,我們只需要編譯test.c 生成新的test.o 對象文件,最后再跟test2.o 文件鏈接生成新的可執行文件test。

可以省去編譯test2.c 這段時間,如果文件較多,節省的編譯時間就會很長。

  • 使用Makefile 自動編譯

touch Makefile

.DEFAULT_GOAL := run

test2.o: test2.c
  gcc -o test2.o -c test2.c

test.o: test.c
  gcc -o test.o -c test.c

test: test2.o test.o
  gcc -o test test2.o test.o

run: test
  ./test

clean:
  rm -f *.o
  rm -f test
  

$ ls
Makefile  test2.c  test.c
$ make
gcc -o test2.o -c test2.c
gcc -o test.o -c test.c
gcc -o test test2.o test.o
./test
stduy gcc

執行make 命令

$ ls
Makefile  test2.c  test.c
$ make
gcc -o test2.o -c test2.c
gcc -o test.o -c test.c
gcc -o test test2.o test.o
./test
stduy gcc

Makefile 大致可以理解成 目標 、 依賴 以及 構建指令 。

缺省情況下,Makefile定義的第一個目標為默認目標,在第一行顯式定義了默認目標,由于沒有變更,再次構建時自動省略編譯環節。

$ make
./test
study gcc

定義用于清理編譯結果的目標 ==》 clean:

$ ls
Makefile  test  test2.c  test2.o  test.c  test.o
$ make clean
rm -f *.o
rm -f test
$ ls
Makefile  test2.c  test.c

清理編譯結果,在進行全新編譯時很方便。

分享到:
標簽:Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定