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

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

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

背景

  • 會不會寫makefile,從側(cè)面說明了一個(gè)人是否具備完成大型工程的能力。
  • 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作。
  • makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個(gè)make命令,整個(gè)工程完全自動編譯,極大的提高了軟件開發(fā)的效率。
  • make是一個(gè)命令工具,是一個(gè)解釋makefile中指令的工具,一般來說,大多數(shù)的IDE都有這個(gè)命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。
  • make是一條命令,makefile是一個(gè)文件,兩個(gè)搭配使用,完成項(xiàng)目自動化構(gòu)建。

實(shí)例代碼

C代碼

#include <stdio.h>

int main()
{
    printf("hello Makefile!\n");
    return 0;
}

Makefile文件

hello:hello.o
    gcc -o hello hello.o
hello.o:hello.s
    gcc -c -o hello.o hello.s
hello.s:hello.i
    gcc -S -o hello.s hello.i
hello.i:hello.c
    gcc -E -o hello.i hello.c

.PHONY:clean
clean:
    rm -f hello.i hello.s hello.o hello

語法說明

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

依賴關(guān)系

  • 上面的文件 hello ,它依賴 hello.o?
  • ?hello.o ,它依賴 hello.s?
  • ?hello.s ,它依賴 hello.i?
  • ?hello.i ,它依賴 hello.c?

依賴方法

  • ?gcc -option hello.* hello.* ,就是與之對應(yīng)的依賴方法。

make執(zhí)行效果

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

原理

make是如何工作的,在默認(rèn)的方式下,也就是我們只輸入make命令。那么:

  1. make會在當(dāng)前目錄下找名字叫“Makefile”或“makefile”的文件。
  2. 如果找到,它會找文件中的第一個(gè)目標(biāo)文件(target),在上面的例子中,他會找到“hello”這個(gè)文件,并把這個(gè)文件作為最終的目標(biāo)文件。
  3. 如果hello文件不存在,或是hello所依賴的后面的hello.o文件的文件修改時(shí)間要比hello這個(gè)文件新(可以用 touch 測試),那么,他就會執(zhí)行后面所定義的命令來生成hello這個(gè)文件。
  4. 如果hello所依賴的hello.o文件不存在,那么make會在當(dāng)前文件中找目標(biāo)為hello.o文件的依賴性,如果找到則再根據(jù)那一個(gè)規(guī)則生成hello.o文件。(這有點(diǎn)像一個(gè)堆棧的過程)
  5. 當(dāng)然,你的C文件和H文件是存在的啦,于是make會生成hello.o文件,然后再用hello.o文件聲明make的終極任務(wù):執(zhí)行文件hello。
  6. 這就是整個(gè)make的依賴性,make會一層又一層的去找文件的依賴關(guān)系,直到最終編譯出第一個(gè)目標(biāo)文件。
  7. 在找尋的過程中,如果出現(xiàn)錯(cuò)誤,比如最后被依賴的文件找不到,那么make就會直接退出,并報(bào)錯(cuò),而對于所定義的命令的錯(cuò)誤,或是編譯不成功,make根本不理。
  8. make只管文件的依賴性,即:如果在我找了依賴關(guān)系之后,冒號后面的文件還是不在,那么對不起,我就不工作啦。

項(xiàng)目清理

  • 工程是需要被清理的
  • 像clean這種,沒有被第一個(gè)目標(biāo)文件直接或間接關(guān)聯(lián),那么它后面所定義的命令將不會被自動執(zhí)行,不過,我們可以顯示要make執(zhí)行。即命令——“make clean”,以此來清除所有的目標(biāo)文件,以便重新編譯。
  • 但是一般我們這種clean的目標(biāo)文件,我們將它設(shè)置為偽目標(biāo),用 .PHONY 修飾,偽目標(biāo)的特性是,總是被執(zhí)行的。
  • 可以將我們的 hello 目標(biāo)文件聲明成偽目標(biāo),測試一下。

clean執(zhí)行效果

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


END文章來源地址http://www.zghlxwxcb.cn/news/detail-760918.html

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

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

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

相關(guān)文章

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

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

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

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

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

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

    2023年04月27日
    瀏覽(23)
  • 【Linux】Linux下的項(xiàng)目自動化構(gòu)建工具——make和makefile

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

    ? ? ? ? 大家好,好久不見!今天小獅子為大家?guī)淼奈恼率且黄P(guān)于Linux下的項(xiàng)目自動化構(gòu)建工具——make和makefile的博客,希望能幫助到大家。 ? ? ? ? 當(dāng)我們進(jìn)行涉及多文件的工程開發(fā)時(shí),我們需要對很多不同類型、不同功能,存在于不同目錄下的源文件進(jìn)行編譯操作,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    【Linux】--- Linux編譯器-gcc/g++、調(diào)試器-gdb、項(xià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))來進(jìn)行版本提升 。使用 -o 選項(xiàng),可以將編譯生成的可執(zhí)行重命名

    2024年03月10日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包