国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile

這篇具有很好參考價(jià)值的文章主要介紹了【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??前言

? ? ? ? 大家好,好久不見!今天小獅子為大家?guī)?lái)的文章是一篇關(guān)于Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile的博客,希望能幫助到大家。

正文

? ? ? ? 當(dāng)我們進(jìn)行涉及多文件的工程開發(fā)時(shí),我們需要對(duì)很多不同類型、不同功能,存在于不同目錄下的源文件進(jìn)行編譯操作,這時(shí)錯(cuò)綜復(fù)雜的文件關(guān)系會(huì)對(duì)我們?cè)斐珊艽蟮穆闊?。那么這時(shí)我們就需要使用到make和makefile這樣的自動(dòng)化構(gòu)建工具。

? ? ? ? 我們先大致地對(duì)make和makefile進(jìn)行描述:

? ? ? ? makefile是一個(gè)文件,其中定義了各個(gè)源文件的編譯規(guī)則,比如說(shuō)哪個(gè)文件應(yīng)該先編譯,哪個(gè)文件應(yīng)該后編譯,哪些文件需要重新編譯等。除此之外,在makefile中還可以進(jìn)行一些功能操作,例如對(duì)工程中的老舊文件進(jìn)行清理。

?

? ? ? ? make是一條指令,它可以解析makefile中的各種指令,從而自動(dòng)化地對(duì)工程中的源文件進(jìn)行各種操作。

?

? ? ? ? make和makefile搭配使用可以大大地減少我們的工作量,達(dá)成“自動(dòng)化編譯”,這時(shí)我們只需要一個(gè)指令便可以使整個(gè)工程完全自動(dòng)編譯。

? ? ? ? 當(dāng)我們大致地了解了make和makefile之后,我們接著對(duì)這兩者進(jìn)行詳細(xì)的學(xué)習(xí)。

簡(jiǎn)單的運(yùn)用

? ? ? ? 當(dāng)我們想要使用make和makefile,我們首先需要在當(dāng)前目錄下創(chuàng)建一個(gè)makefile,makefile的文件名可以為makefileMakefile或者GNUmakefile。這時(shí)固定的,因?yàn)樵谀J(rèn)的情況下,make命令會(huì)在當(dāng)前目錄下按順序找尋文件名為“GNUmakefile”、“makefile”、“Makefile”的文件。

? ? ? ? 那么我們以經(jīng)典的“Hello world!”來(lái)簡(jiǎn)單演示和講解make和makefile的使用方法。當(dāng)我們創(chuàng)建了一個(gè)makefile之后,我們還需要?jiǎng)?chuàng)建該程序所需要的源文件,我將它命名為main.c,并在其中編寫相關(guān)的代碼(輸出"Hello world!")。

? ? ? ? 準(zhǔn)備過(guò)程完成如下:

【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile,【Linux】Linux操作系統(tǒng),linux,centos

? ? ? ? ? 現(xiàn)在我們進(jìn)行對(duì)makefile文件的編寫,編寫makefile時(shí),我們需要寫入的內(nèi)容主要有兩個(gè),分別稱為依賴關(guān)系依賴方法。

依賴關(guān)系:

? ? ? ? 表示一個(gè)文件的生成是依附于另一個(gè)文件,語(yǔ)法為 【目標(biāo)文件:被編譯文件】 ,也就是表明目標(biāo)文件依賴被編譯文件。

依賴方法:

? ? ? ? 代表依賴關(guān)系中的依賴文件該如何轉(zhuǎn)化為目標(biāo)文件,語(yǔ)法為 【tab 由依賴文件生成目標(biāo)文件的手段】(這里必須使用tab作為前綴)。

? ? ? ? 那么讓我們看看Hello world對(duì)應(yīng)的makefile的依賴關(guān)系和依賴方法該如何編寫:

【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile,【Linux】Linux操作系統(tǒng),linux,centos

? ? ? ? ?這樣設(shè)定好依賴關(guān)系和依賴方法之后我們就可以使用make創(chuàng)建出名為?HW?的可執(zhí)行文件。語(yǔ)法為【make 指令】。其中?:

  • makefile中可能會(huì)有多個(gè)目標(biāo)文件,但是makefile會(huì)以第一個(gè)目標(biāo)作為終極目標(biāo)。
  • 使用make時(shí)的默認(rèn)動(dòng)作就是第一個(gè)目標(biāo)對(duì)應(yīng)的規(guī)則,也就是只輸入make就會(huì)默認(rèn)生成第一個(gè)目標(biāo)。
  • make掃描makefile的順序是從上到下。

【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile,【Linux】Linux操作系統(tǒng),linux,centos

? ? ? ? ?除此之外,如果我們現(xiàn)在想要對(duì)編譯過(guò)程中產(chǎn)生的臨時(shí)文件進(jìn)行清理或者清理舊版本的程序時(shí),如果我們直接使用rm指令進(jìn)行清除,這樣的行為未免有些粗魯和危險(xiǎn)。于是makefile中也需要支持對(duì)文件的清理工作,也就是clean。同樣按照依賴關(guān)系和依賴方法的形式進(jìn)行編寫:

【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile,【Linux】Linux操作系統(tǒng),linux,centos

? ? ? ? ?那么我們現(xiàn)在可以嘗試使用makefile中的規(guī)則對(duì)文件進(jìn)行清理:

【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile,【Linux】Linux操作系統(tǒng),linux,centos

? ? ? ? ? ? ? ? ?上面就是make和makefile的一些簡(jiǎn)單運(yùn)用,現(xiàn)在我們來(lái)看看makefile的工作原理:

  1. 目標(biāo)的生成:?a. 檢查依賴關(guān)系中的依賴文件是否存在; b. 若依賴文件不存在,則尋找是否有某個(gè)規(guī)則用來(lái)生成該依賴文件。
  2. 目標(biāo)的更新:?a. 檢查目標(biāo)的所有依賴,任何一個(gè)依賴有更新時(shí),就重新生成目標(biāo); b. 目標(biāo)文件比依賴文件時(shí)間晚,則需要更新。

? ? ? ? 在目標(biāo)的更新中提到了文件時(shí)間的問(wèn)題,這里簡(jiǎn)單的拓展一些關(guān)于文件時(shí)間的知識(shí)。我們都知道,文件=文件內(nèi)容+文件時(shí)間。文件時(shí)間一般被分成三個(gè)時(shí)間,可以簡(jiǎn)單記為ACM三個(gè)時(shí)間:A(Access)、C(Change)、M(Modify)。Change代表最近改變文件內(nèi)容的時(shí)間,Modify代表最近改變文件屬性的時(shí)間,Access代表最近讀文件的時(shí)間。

偽目標(biāo)

? ? ? ? 如果我們不想考慮文件時(shí)間,而想要無(wú)論什么情況都重新編譯,這時(shí)就需要設(shè)置偽目標(biāo)。偽目標(biāo)表示這個(gè)目標(biāo)總是被執(zhí)行。一般來(lái)說(shuō)產(chǎn)生可執(zhí)行文件的邏輯是不會(huì)用偽目標(biāo)修飾的,偽目標(biāo)一般用于clean。

特殊符號(hào)

? ? ? ? makefile中有一些特殊符號(hào),這里列舉一些特殊符號(hào)。

????????-?:表示此命令即使執(zhí)行出錯(cuò),也依然繼續(xù)執(zhí)行后續(xù)命令。如:

????????-rm a.o build/

? ? ? ? @:表示該命令只執(zhí)行,不回顯。一般規(guī)則執(zhí)行時(shí)會(huì)在終端打印出正在執(zhí)行的規(guī)則,而加上此符號(hào)后將只執(zhí)行命令,不回顯執(zhí)行的規(guī)則。如:

? ? ? ? @gcc -o HW main.c

? ? ? ? $@和$^ 前者指的是依賴關(guān)系中的目標(biāo)文件,后者指的是依賴關(guān)系中的依賴文件。如;

? ? ? ? HW:main.c

? ? ? ? gcc -o $@ $^

??結(jié)語(yǔ)

? ? ? ? 以上就是make和makefile的基本入門知識(shí)啦,希望能對(duì)大家有所幫助。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-535272.html

到了這里,關(guān)于【Linux】Linux下的項(xiàng)目自動(dòng)化構(gòu)建工具——make和makefile的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

    【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

    會(huì)不會(huì)寫makefile,從一個(gè)側(cè)面說(shuō)明了一個(gè)人是否具備完成大型工程的能力 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜

    2023年04月09日
    瀏覽(25)
  • 【Linux】Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/makefile

    【Linux】Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/makefile

    ??博客主頁(yè):小智_x0___0x_ ??歡迎關(guān)注:??點(diǎn)贊??收藏??留言 ??系列專欄:Linux入門到精通 ??代碼倉(cāng)庫(kù):小智的代碼倉(cāng)庫(kù) 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需

    2024年02月12日
    瀏覽(17)
  • 【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile及拓展

    【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile及拓展

    1、背景知識(shí) 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作 makefile帶來(lái)的好處就是——“自動(dòng)化編譯”,一旦

    2023年04月27日
    瀏覽(23)
  • Linux工具【2】(調(diào)試器gdb、項(xiàng)目自動(dòng)化構(gòu)建工具make/Makefile)

    Linux工具【2】(調(diào)試器gdb、項(xiàng)目自動(dòng)化構(gòu)建工具make/Makefile)

    在上一篇文章中介紹了Linux中的編輯器vim與編譯器gcc與g++: 戳我看vim與gcc詳解哦 在本篇文章中將繼續(xù)來(lái)介紹Linux中的工具: 調(diào)試器gdb與項(xiàng)目自動(dòng)化構(gòu)建工具make/Makefile 在Windows環(huán)境中,我們使用vs時(shí),常常會(huì)逐過(guò)程與逐語(yǔ)句地調(diào)試代碼以更高效地尋找到錯(cuò)誤的位置。在Linux中也

    2024年02月12日
    瀏覽(24)
  • Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile以及git三板斧

    Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile以及git三板斧

    是否會(huì)寫make/makefile,從側(cè)面反映了一個(gè)程序員是否具備完成大型工程的能力。一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更

    2024年02月16日
    瀏覽(27)
  • 【Linux】Linux編譯器-gcc/g++ && Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

    【Linux】Linux編譯器-gcc/g++ && Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile

    目錄 Linux編譯器-gcc/g++使用 1.背景知識(shí) ?Linux中頭文件的目錄在 Linux 庫(kù) 條件編譯的典型應(yīng)用 2.gcc如何完成 動(dòng)態(tài)庫(kù) vs 靜態(tài)庫(kù) debug release Linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile 背景 用法 特殊符號(hào)? 預(yù)處理(去注釋,頭文件展開,條件編譯,宏替換) 編譯(生成匯編) 匯編(生成

    2024年02月20日
    瀏覽(33)
  • 【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具-make和Makefile 的使用和進(jìn)度條的實(shí)現(xiàn)

    【Linux】項(xiàng)目自動(dòng)化構(gòu)建工具-make和Makefile 的使用和進(jìn)度條的實(shí)現(xiàn)

    什么是makefile 在我們以后的工作環(huán)境中,一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作 Linux中提供了自動(dòng)化

    2024年02月07日
    瀏覽(18)
  • 【Linux】:Linux項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile || Linux第一個(gè)小程序——進(jìn)度條(簡(jiǎn)單版本)

    【Linux】:Linux項(xiàng)目自動(dòng)化構(gòu)建工具——make/Makefile || Linux第一個(gè)小程序——進(jìn)度條(簡(jiǎn)單版本)

    在本章開始給大家分享一個(gè)圖片 希望對(duì)你有幫助 在這里插入圖片描述 在開始本章之前 我們需要回顧一下上節(jié)課的函數(shù)的動(dòng)靜態(tài)庫(kù)的優(yōu)缺點(diǎn) 動(dòng)態(tài)庫(kù)的優(yōu)點(diǎn): 比較節(jié)省資源(這里說(shuō)的資源不僅僅是磁盤資源 也包括網(wǎng)絡(luò)資源 內(nèi)存資源等等),不會(huì)出現(xiàn)太多的重復(fù)代碼 缺點(diǎn):對(duì)

    2024年02月05日
    瀏覽(39)
  • 【探索Linux】—— 強(qiáng)大的命令行工具 P.6(調(diào)試器-gdb、項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile)

    【探索Linux】—— 強(qiáng)大的命令行工具 P.6(調(diào)試器-gdb、項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile)

    前面我們講了C語(yǔ)言的基礎(chǔ)知識(shí),也了解了一些數(shù)據(jù)結(jié)構(gòu),并且講了有關(guān)C++的一些知識(shí),也學(xué)習(xí)了一些Linux的基本操作,也了解并學(xué)習(xí)了有關(guān)Linux開發(fā)工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代碼也相信大家都掌握的不錯(cuò),今天博主帶大家了解一下 —— Linux系統(tǒng)下的調(diào)試

    2024年02月12日
    瀏覽(25)
  • 【Linux】--- Linux編譯器-gcc/g++、調(diào)試器-gdb、項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile 使用

    【Linux】--- Linux編譯器-gcc/g++、調(diào)試器-gdb、項(xiàng)目自動(dòng)化構(gòu)建工具-make/Makefile 使用

    格式: gcc [選項(xiàng)] 要編譯的文件 [選項(xiàng)] [目標(biāo)文件] , gcc / g++ 安裝: sudo yum install -y gcc-c++ 。安裝后的編譯器默認(rèn)的版本是較低的,我們可以 使用選項(xiàng) -std=c99 (即使用c99標(biāo)準(zhǔn)), -std=c++11 (即使用c++11的標(biāo)準(zhǔn))來(lái)進(jìn)行版本提升 。使用 -o 選項(xiàng),可以將編譯生成的可執(zhí)行重命名

    2024年03月10日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包