精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是makefile?為什么需要用makefile?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-03-06 16:32 ? 次閱讀

什么是makefile?為什么需要用makefile?

正常編譯一個c文件,直接敲命令:

gcc hello.c -o hello
就行。

如果文件稍微多幾個,gcc 里面多加幾個問題也不大。

但是如果給你一個完整的項目工程,里面包含幾千甚至幾萬個文件,而且又分成不同的文件夾,再去敲命令一個一個編譯,顯然有點不現實。

細心的同學會發現,凡是這些工程項目,里面都會有個叫Makefile的文件,要么這個文件直接存在,要么可以通過某種方式生成。

Makefile就是工程管理器,里面指定了本項目的編譯規則。

先編譯哪些,再編譯哪些,要鏈接哪些庫等等。

簡單的Makefile確實挺簡單,但是復雜的Makefile也很復雜。

下面來寫個簡單的Makefile。 假設現在只有一個源文件 hello.c。
root@turbo:~# ls
hello.c
root@turbo:~#
打開Makefile,先寫目標文件,就是最終要生成的二進制,冒號后面寫上依賴文件,就是通過哪個文件可以生成目標文件。
hello:hello.c
另起一行,先敲一下tab鍵,然后寫編譯的規則,就是我們平時敲的命令。
hello:hello.c
  gcc hello.c -o hello
執行Makefile,只要敲make就行,然后就能順利編譯。
make
再把文件增加兩個。

Makefile中,目標文件不變,依賴文件以及下面編譯規則都要增加兩個文件。

這樣確實麻煩了些。

Makefile里面也有變量一說,引用變量的時候,用 $ 符號。

有了變量,下次再增加什么文件,只要往后接就行。
Target=hello
Object=hello.cprint.c show.c
$(Target):$(Object)
  gcc $(Object) -o $(Target)
不過一般依賴文件也不寫成 .c ,因為最終的可執行文件都是由匯編后的文件合成,也就是多個 .o 文件經過鏈接變成了可執行文件,所以這里一般寫成 .o 。
Target=hello
Object=hello.oprint.oshow.o
$(Target):$(Object)
  gcc $(Object) -o $(Target)
那 .o 文件又怎么來,下面可以繼續寫由 .c 生成 .o ,不過Makefile里面有隱含規則,所以這幾行可以不寫。

make的時候,過程很清晰,先從.c 變成 .o 再把 .o 合成最終的可執行文件。
root@turbo:~# make
cc    -c -o hello.o hello.c
cc    -c -o print.o print.c
cc    -c -o show.o show.c
gcc hello.o print.o show.o -o hello
root@turbo:~#



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 二進制
    +關注

    關注

    2

    文章

    793

    瀏覽量

    41599
  • Makefile
    +關注

    關注

    1

    文章

    125

    瀏覽量

    19161

原文標題:如何寫一個簡單的Makefile

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Makefile中文教程 -下載

    Makefile中文教程,免費下載哦。
    發表于 03-25 08:57 ?67次下載

    教你寫Makefile

    教你寫Makefile 什么是makefile?或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺得要作一個好的和professional的程序員,
    發表于 02-10 14:24 ?37次下載

    駕馭Makefile

    到項目中,需要的知識是線、甚至是面。這篇文章以helloworld作為開篇,接著是simple項目、complicated項目以及huge項目,一步一步的引入了Makefile中的概念,以及告訴你做一個實
    發表于 01-05 17:05 ?9次下載

    跟我一起學makefile

    關于makefile學習,深入了解嵌入式下makefile的編寫
    發表于 05-23 18:21 ?0次下載

    駕馭makefile

    一本Makefile的經典教程,深入淺出,易學易懂
    發表于 06-17 16:16 ?9次下載

    Linux內核Makefile文件

    Makefile文件的詳細編寫過程
    發表于 08-28 09:25 ?14次下載

    linux makefile教程

     什么是makefile?或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺得要作一個好的和professional的程序員,makefile
    發表于 11-12 09:11 ?5296次閱讀

    makefile的基本語法

     在Makefile中,最重要的三個概念是:目標(target)、依賴關系(dependency)和命令(command)。目標是指要干什么,即運行make后生成什么;依賴是指明目標所依賴的其他目標;命令則告訴make如何生成目標,這三個概念是通過Makefile中的規則
    發表于 11-12 10:15 ?1.1w次閱讀

    windows平臺下makefile操作教程

    Makefile一個工程中的源文件不計其數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件
    發表于 11-24 17:14 ?1.1w次閱讀
    windows平臺下<b class='flag-5'>makefile</b>操作教程

    Makefile是什么?Makefile工作原理是怎樣的?Makefile經典教程免費下載

    Makefile的重要性 會不會寫makefile,從一個側面說明了一個人是否具備完成大型工程的能力 makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make
    發表于 09-12 17:19 ?0次下載
    <b class='flag-5'>Makefile</b>是什么?<b class='flag-5'>Makefile</b>工作原理是怎樣的?<b class='flag-5'>Makefile</b>經典教程免費下載

    嵌入式中的Makefile應用

    文章目錄一.Makefile 引入二. Makefile語法1.通配符2.假象目標3.變量三.Makefile函數四.實例本文主要總結一下嵌入式開發中的Makefile,一般項目中都
    發表于 11-03 17:06 ?11次下載
    嵌入式中的<b class='flag-5'>Makefile</b>應用

    MakefileMakefile與shell命令的聯系

    博主最近在項目實踐過程中,需要深度定制項目的Makefile,其中有些復雜的流程必須得借助shell腳本才能高效地完成,為此博主特意深入學習了在Makefile種調用shell命令的方法。
    的頭像 發表于 07-11 09:06 ?3360次閱讀
    【<b class='flag-5'>Makefile</b>】<b class='flag-5'>Makefile</b>與shell命令的聯系

    Makefile】簡單實用的Makefile模板來了

    【Linux + Makefile】簡單實用的Makefile模板來了
    的頭像 發表于 08-31 12:46 ?1874次閱讀
    【<b class='flag-5'>Makefile</b>】簡單實用的<b class='flag-5'>Makefile</b>模板來了

    什么是Makefile

    如果您有多個 c、c++ 和其他語言的文件,并且想通過終端命令編譯它們,我們該如何編譯他們呢?為了解決這類問題,Makefile就出現了。
    的頭像 發表于 02-17 10:41 ?4449次閱讀
    什么是<b class='flag-5'>Makefile</b>?

    Makefile可以做什么?Makefile的基本格式

    Makefile可以根據指定的依賴規則和文件是否有修改來執行命令。常用來編譯軟件源代碼,只需要重新編譯修改過的文件,使得編譯速度大大加快。
    的頭像 發表于 01-25 11:18 ?653次閱讀