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

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

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

一、關(guān)于make/makefile的背景知識

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

二、依賴關(guān)系和依賴方法

在使用make/makefile自動化構(gòu)建工具時,會存在兩個“依賴”,依賴關(guān)系和依賴方法。什么是依賴關(guān)系和依賴方法呢?比如說現(xiàn)在到月底了,你要問你爸要生活費(fèi)了,你打通電話,跟你爸說了一句,“爸,我是你兒子,我沒有生活費(fèi)了,你給我寄點(diǎn)生錢”,然后你就掛了電話,你說的這一句“爸,我是你兒子”就是表明你跟你爸之間的依賴關(guān)系,“你給我寄錢”就是依賴方法,正因為你是你爸的兒子,即你和你把有依賴關(guān)系,你爸才會給你錢,即依賴方法;如果沒有依賴關(guān)系,那么就沒辦法產(chǎn)生依賴方法。你不可能問你舍友的爸要錢,因為你們沒有依賴關(guān)系,不能產(chǎn)生依賴方法?;氐酱a上,依賴關(guān)系就是某一個文件的生成需要依賴另外一個或者多個文件為基礎(chǔ),這就是這些文件之間的依賴關(guān)系,依賴方法就是生成目標(biāo)文件的方法,即如何編譯才能生成目標(biāo)文件。

三、make/makefile如何書寫?

首先需要在當(dāng)前目錄下創(chuàng)建一個makefile/Makefile文件,按照編譯代碼的整個過程編譯就是分為:預(yù)處理,編譯,匯編,鏈接形成可執(zhí)行文件。
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
但是像上面那樣寫就寫得太復(fù)雜了,我們一般都是直接一步到位生成可執(zhí)行文件的。
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
因為一個文件的生成可能需要依賴多個文件,當(dāng)依賴的文件很多的時候,我們寫起來也很不方便,所以又產(chǎn)生了一種特殊符號的形式。
$@代表的是依賴關(guān)系中冒號的左邊, $^代表的是依賴關(guān)系中冒號的右邊。寫法如下:
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

四、文件的三個時間(Access、Modify、Change)

細(xì)心的朋友肯定發(fā)現(xiàn)了以下問題:
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
可以看到,當(dāng)我們寫好代碼之后,第一次make的時候是正常編譯,但是如果在沒有修改過代碼的情況下再make一次,編譯器就不讓我們編譯了,這是什么原因呢?
那我們就要來了解了解Access、Modify和Change三個時間了。
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
如果想要手動更新這三個時間,可以使用touch命令,touch+文件名的作用是,如果該文件不存在就是創(chuàng)建該文件,如果該文件已經(jīng)存在了,則會更新三個時間。
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

五、Linux下倒計時和進(jìn)度條代碼的書寫

5.1 回車換行

我們都聽到回車換行是一起講的,你是否覺得回車換行是一個詞呢?其實不是的,回車換行是兩個獨(dú)立的詞語,回車是回車,換行是換行,他們兩沒有半毛錢關(guān)系;回車的意思是回到本行的最開始的位置,換行是切換到下一行。在Linux下\r代表回車,\n其實是既有回車又有換行的。

5.2 緩沖區(qū)

Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
觀察上述圖片你會發(fā)現(xiàn),main函數(shù)的代碼明明是先打印hello world?。?!,再sleep兩秒鐘的,但是根據(jù)圖片所示,卻是先sleep兩秒鐘,再打印出了hello world!?。〉?,這是什么原因呢?難道代碼還能從下往上執(zhí)行?當(dāng)然不是,不可能是先執(zhí)行下面的代碼,再執(zhí)行上面的代碼的,所以打印函數(shù)肯定先執(zhí)行了,但是卻沒有看見打印內(nèi)容到顯示屏,說明打印的代碼肯定在某個位置上存著,等到sleep后再在顯示屏上刷新出來,那么打印在了哪里呢?其實是在緩沖區(qū)里。
緩沖區(qū)是C語言維護(hù)的一段內(nèi)存,可以用來暫時存放打印的內(nèi)容,等到緩沖區(qū)滿了或者程序結(jié)束后會再刷新到顯示屏上去,為什么要有緩沖區(qū)臨時存儲呢?直接打印到顯示器上不就好了嗎?緩沖區(qū)當(dāng)然有它的意義,因為顯示器是計算機(jī)的外部設(shè)備,訪問速度慢,頻繁地向顯示器打印內(nèi)容不利于操作系統(tǒng)整機(jī)效率的提高,會降低操作系統(tǒng)的效率,緩沖區(qū)的存在能大大地減少訪問外設(shè)的頻率。
那么我們?nèi)绾文軌蛄⒓窗褍?nèi)容刷新到顯示器上呢?可以用fflush接口函數(shù)實時地把緩沖區(qū)上的內(nèi)容刷新到顯示器上。
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

如上圖所示,打印后用fflush接口刷新stdout(標(biāo)準(zhǔn)輸出:顯示器)
就能先看到打印的結(jié)果再sleep了。

5.3 倒計時代碼實現(xiàn)

Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

5.4 進(jìn)度條代碼實現(xiàn)

makefile
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
processBar.h
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
processBar.c
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

test.c

Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

運(yùn)行結(jié)果:
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

六、git三板斧

6.1 什么是git?

git是具有網(wǎng)絡(luò)功能的版本控制器,是一款開源的軟件。不知道你有沒有過這樣的經(jīng)歷,比如說你寫實驗報告,寫好了第一版本的實驗報告,提交的時候被老師罵了一頓,說到處都是問題,讓你拿回來重新修改;然后你拿回來修改了一遍,得到了第二版本的實驗報告;提交后老師說改正了一些問題,但是另外的問題又暴露出來了,讓你拿回去再修改;你修改了一遍,得到了第三版本的實驗報告;上交的時候,老師說你怎么越改越差了,再拿回去修改,你又改了一遍,拿給老師,老師板著臉罵了你一頓,然后說,算了,你的第二版本的實驗報告寫得還稍微好一點(diǎn),你把你的第二個版本的實驗報告交給我吧!這時回到宿舍的你看著第四版本的實驗報告,根本想不起來第二個版本是什么樣的了,因為你又沒有實現(xiàn)做好備份,所以你根本沒辦法恢復(fù)出第二版本的實驗報告交給老師。從這個例子就可以看出,當(dāng)我們在修改的時候,有可能需要對比不同版本時,最好是先做好每一次改動的痕跡,一遍找到舊的版本。而git就是用來干這個版本控制的活的。常見的版本控制器還有svn等。
git既可以做服務(wù)端,又可以做客戶端;客戶端就是我們在我們自己的電腦上下載了git這個軟件,然后在本地創(chuàng)建了一個目錄來做版本控制管理,這個目錄就叫做本地倉庫。由于本地的東西會出現(xiàn)丟失的情況,一旦丟失,那么就找不到了,所以git有一個內(nèi)存非常大的云服務(wù)器做服務(wù)器端,服務(wù)端也能夠做版本控制管理的,即你可以把你的本地倉庫的內(nèi)容推送給遠(yuǎn)端倉庫,自此,你就不怕因你的本地倉庫的內(nèi)容丟失而找不到你想要的版本了。這就是git的核心功能。

6.2 商業(yè)化版本的git網(wǎng)站

很多的互聯(lián)網(wǎng)公司就基于git做了一些商業(yè)化的網(wǎng)站,例如:gitee、github等等。就好比互聯(lián)網(wǎng)公司基于Linux內(nèi)核做了一些商業(yè)化的操作系統(tǒng)(OS)一樣,例如:Centos,烏班圖等等。

6.3 git多人協(xié)作

git除了可以做版本控制,還可以完成多人協(xié)作。假如在公司里做項目的時候,一般都是多人一起協(xié)作完成的,所以一個人寫的代碼,隊友們也是需要用的,我們可以通過上傳到git上,然后在各自的電腦上拉去下來就可以做到多人協(xié)作完成工作了。

6.3 git clone

git clone是把遠(yuǎn)端倉庫克隆到本地,使本地倉庫和遠(yuǎn)端倉庫建立聯(lián)系。
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
執(zhí)行完之后遠(yuǎn)端的倉庫就被clone到了本地:
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

完成了clone之后,進(jìn)入linux目錄,就會有一個.git的隱藏目錄文件,這個.git文件就是云服務(wù)器的本地倉庫。在gitee遠(yuǎn)端也有一個一模一樣的.git,本地倉庫如下圖:
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
遠(yuǎn)端倉庫和本地倉庫建立好聯(lián)系之后就可以通過git三板斧向倉庫里推送代碼了。

6.4 git三板斧之 – git add

git add + 文件名
該命令是將你的文件添加到暫存區(qū)里,具體操作為:
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

6.5 git三板斧之 – git commit

git commit -m “日志信息”
注意:-m選項必須要有,即日志信息一定要有的,如果不帶-m是無法提交到本地倉庫的。

該命令是真正地將文件提交到本地倉庫里,具體操作為:
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

6.6 git 三板斧之 – git push

git push
是把本地倉庫的代碼推送到遠(yuǎn)端倉庫。
具體操作為:
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
完成了git push之后在gitee上就能看到我們推送過去的代碼了,如下圖:包括日志信息等。
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維
git首次使用需要配置用戶名和郵箱。
Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧,Linux系統(tǒng)編程,linux,自動化,git,服務(wù)器,運(yùn)維

以上就是今天想要跟大家分享的內(nèi)容啦,你學(xué)會了嗎?如果這篇文章對你有所幫助,那么點(diǎn)點(diǎn)小心心,點(diǎn)點(diǎn)關(guān)注唄,后期還會持續(xù)更新Linux相關(guān)的知識哦,我們下期見啦?。。。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-574330.html

到了這里,關(guān)于Linux項目自動化構(gòu)建工具-make/Makefile以及git三板斧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(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ī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    在本章開始給大家分享一個圖片 希望對你有幫助 在這里插入圖片描述 在開始本章之前 我們需要回顧一下上節(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、項目自動化構(gòu)建工具-make/Makefile)

    【探索Linux】—— 強(qiáng)大的命令行工具 P.6(調(diào)試器-gdb、項目自動化構(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 命令行提交代碼也相信大家都掌握的不錯,今天博主帶大家了解一下 —— Linux系統(tǒng)下的調(diào)試

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

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

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

    2024年03月10日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包