最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux?自動化構(gòu)建工具make/Makefile的使用詳解

 更新時間:2022年04月21日 09:36:52   作者:abs(ln(1+NaN))  
這篇文章主要介紹了Linux?自動化構(gòu)建工具?make/Makefile,要如何編譯.c文件,關(guān)鍵就在于Makefile是怎么寫的,下面我們主要介紹這兩者的使用,需要的朋友可以參考下

VS中有一鍵編譯+自動運行,Linux也給我們提供了對應(yīng)的編譯方式,雖然不及VS那么便捷,但是相比于手動輸入 gcc -o add add.c ,我們一句make就可以搞定

Makefile是一個文件,能夠存放上述 gcc -o add add.c 這種編譯指令

make是一個命令工具,能夠解釋Makefile中的指令

要如何編譯.c文件,關(guān)鍵就在于Makefile是怎么寫的,下面我們主要介紹這兩者的使用

一、單個文件的編譯

假設(shè)我們要編譯這么一個test.c文件,我們希望編譯生成一個名為test的可執(zhí)行文件

我們在test.c所在目錄下創(chuàng)建一個Makefile文件,這里有兩種編譯寫法

1、寫法一:逐個生成.i、.s、.o文件,最后再生成 test執(zhí)行文件

先一步步向下分析,需要什么依賴文件,然后再一步步生成

編寫好以后,我們只需要在命令行輸入make,系統(tǒng)就會幫我們自動編譯了,同時會生成每一步產(chǎn)生的文件按

2、 寫法二:一步到位,直接通過 test.c 生成 test 執(zhí)行文件(推薦)

Makefile中要寫的內(nèi)容如下

第一行:確定好依賴文件和目標(biāo)文件。也就是要用依賴文件來生成目標(biāo)文件

第二行:編譯指令。

$@ 指向第一行的目標(biāo)文件,表示目標(biāo)文件test

$^ 指向第一行的依賴文件,表示依賴文件test.c

-std 表示采用的C++標(biāo)準(zhǔn)

接下來我們只需要在命令行輸入make,系統(tǒng)就會幫我們編譯了,編譯成功以后,當(dāng)前目錄下就會多出一個test 執(zhí)行文件

3、 Makefile自動清理

我們每次開始編譯之前,我們最好先清理一下之前生成的執(zhí)行文件,手動輸入 rm test 有點太麻煩了,Makefile只要寫入下面的內(nèi)容,就會自動幫我們清理了

如果我們還希望移除生成的.o 、.s、.i文件,那么第6行只要換成

rm -f test test.o test.s test.i

一般我們make的時候,系統(tǒng)會自動調(diào)用,當(dāng)然也可以手動調(diào)用,如

我們會發(fā)現(xiàn)之前的test執(zhí)行文件不見了

二、多個文件的編譯(同一目錄下)

現(xiàn)在我們有三個文件,分別是test.c、sub.c、sub.h,而且我們要在test.c中調(diào)用sub.h中的函數(shù)

Makefile中的內(nèi)容如下:

test執(zhí)行文件 要依賴 多個文件生成的 .o文件,現(xiàn)在沒有 .o文件,所以需要重新生成 .o文件

當(dāng)前路徑下有多個.c文件,我們逐個去寫的話,就是

test.o:test.c
    gcc -c $@ $^
sub.o:sub.c
    gcc -c $@ $^

但是這樣寫太復(fù)雜了,我們可以選擇下面這種寫法

%.o: %.c
    gcc -c $<

%.o:表示目標(biāo)文件是 .o文件

%.c:表示依賴文件是當(dāng)前路徑下的 .c文件,可以看作是一個集合中放著 test.c sub.c

$< : 展開%.c ,逐個生成對應(yīng)的 .o文件,比如test.c就會生成對應(yīng)的test.o、sub.c就會生成對應(yīng)的

sub.o

現(xiàn)在我們來運行一下

三、多個文件的編譯(不同目錄下)

現(xiàn)在我們有三個文件,test.c、sub.h、sub.c,但是其中sub.h、sub.c在其目錄func_dir 下

Makefile的內(nèi)容如下:

現(xiàn)在我們來運行一下試試

到此這篇關(guān)于Linux 自動化構(gòu)建工具 make/Makefile的文章就介紹到這了,更多相關(guān)linux自動化構(gòu)建工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Shell腳本的條件測試和if條件語句使用方法

    Shell腳本的條件測試和if條件語句使用方法

    這篇文章主要介紹了Shell腳本的條件測試和if條件語句使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 一天一個shell命令 linux好管家-磁盤-du命令詳解

    一天一個shell命令 linux好管家-磁盤-du命令詳解

    這篇文章主要介紹了一天一個shell命令 linux好管家-磁盤-du命令詳解,需要的朋友可以參考下
    2016-06-06
  • Shell腳本定義變量和重新賦值

    Shell腳本定義變量和重新賦值

    這篇文章主要介紹了Shell腳本定義變量和重新賦值,以及變量命名規(guī)則,需要的朋友可以參考下
    2014-07-07
  • linux的cut命令用法總結(jié)

    linux的cut命令用法總結(jié)

    今天小編就為大家分享一篇關(guān)于linux的cut命令用法總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 如何解決 shell 腳本重復(fù)執(zhí)行的問題

    如何解決 shell 腳本重復(fù)執(zhí)行的問題

    假如執(zhí)行備份腳本消耗的時間遠(yuǎn)大于設(shè)置的備份間隔的話,系統(tǒng)會出現(xiàn)多個同時在執(zhí)行腳本的Bash實例,會占用大量的系統(tǒng)資源,進(jìn)而影響正常業(yè)務(wù)程序的運行,那如何解決上述shell腳本重復(fù)執(zhí)行的問題呢,本文將要介紹的 flock 命令可以解決這個問題
    2021-05-05
  • 淺析Linux常用文件管理命令

    淺析Linux常用文件管理命令

    這篇文章主要介紹了Linux常用文件管理命令,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-04-04
  • linux系統(tǒng)上傳下載命令rz和sz的教程

    linux系統(tǒng)上傳下載命令rz和sz的教程

    這篇文章主要介紹了linux系統(tǒng)上傳下載命令rz和sz的安裝測試方法,需要的朋友可以參考下
    2018-01-01
  • Linux Shell字符串變量拼接與賦值的使用

    Linux Shell字符串變量拼接與賦值的使用

    本文主要介紹了Linux Shell字符串變量拼接與賦值的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • linux腳本判斷條件總結(jié)(必看)

    linux腳本判斷條件總結(jié)(必看)

    下面小編就為大家?guī)硪黄猯inux腳本判斷條件總結(jié)(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • shell腳本運行5秒后自動退出的代碼

    shell腳本運行5秒后自動退出的代碼

    shell腳本運行5秒自動退出的代碼,供大家學(xué)習(xí)參考
    2013-02-02

最新評論

东丽区| 高碑店市| 吉木乃县| 颍上县| 涟水县| 读书| 礼泉县| 咸丰县| 景德镇市| 柳河县| 福清市| 晴隆县| 西乡县| 习水县| 马山县| 广饶县| 桦甸市| 阳山县| 镶黄旗| 剑阁县| 衡山县| 平定县| 栾川县| 隆子县| 平山县| 普兰店市| 通江县| 台中县| 胶州市| 乐昌市| 隆林| 兴宁市| 邵阳县| 高州市| 九龙坡区| 化德县| 军事| 阿克陶县| 平谷区| 通海县| 长垣县|