當前位置:首頁 » 編程軟體 » makefileshell腳本

makefileshell腳本

發布時間: 2023-03-22 00:19:33

❶ makefile 文件組成部分

makefile文件主要有以下五種組成部分。顯式規則:顯式規則說明了生成一個或多個目標文件的方法和步驟。這是在編寫makefile文件時明顯指出的,包括要生成的文件、生成文件的依賴文件以及生成的命令等。隱式規則:由於make工具有自動推導的功能,所以在編寫makefile文件的時候可以利用該規則,簡略地書寫makefile。再由 make 工具本身自動推導需要使用的規則。變數的定義: make工具支持變數的定義,這些變數往往都是字元串,因此makefile中的變數更像是C語言中的宏。當makefile被執行時,其中的變數都會被展開到相應的引用位置上。文件指示:其包括三個部分,一個是在一個makefile中引用另一個makefile,就像C語言中的include一樣。另一個是指根據某些情況指定makefile中的有效部分,就像C語言中的預編譯tlif一樣。還有祥核就是定義一個多行的命令。注釋: makefile 中支持行注釋,這一點需要特別注意。makefile 中的注釋和 shell腳本一樣,其注釋是用「#」字元。如果需要在 makefile中使用「#」喚宴知字元,可和消以用『\』對其進行轉義。例如,「\#」表示一個『#』字元。makefile文件的文件名最好命名為makefile或者Makefile。因為在默認的情況下,make命令會在當前目錄下按順序找尋這兩個文件進行解釋。用戶也可以為makefile文件自定義一個文件名,例如,Make.makefile,Make.admin等。

❷ Linux中make

在make命令中不得不提到的就是make file,makefile關繫到了整個工程的編譯規則。一個工程中的源文件不計其數,並且按類型、功能銀空、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因為makefile就像一個 Shell腳本一樣,其中也可以執行鋒枝瞎操作系統的命令。
makefile帶來的好處就是自動化編譯,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的搭蘆提高了軟體開發的效率。 而make是一個命令工具,是一個解釋makefile中指令的命令工具。 make命令執行時,需要一個 makefile 文件,以告訴make命令需要怎麼樣的去編譯程序。
在平時的操作練習中,我們要學會利用make。掌握它的實現方式。

❸ Makefile與shell腳本區別

makefile是通過make命令祥顫來編譯搭宴雹處理程序知帆的,shell腳本是批處理命令,一般是用來管理系統的

❹ makefile與shell參數傳遞知識點1

在make命令行傳遞的參數,在本級makefile和子級makefile都能看到,但是在本級makefile調用的$(shell echo $var)里得不到,在子級makefile里調用的$(shell echo $var)里能得者蔽到。

猜測:makefile里用shell函數冊嫌改時,這個shell函數用的是makefile的父級shell,州判所以沒有makefile執行的這個shell的參數。

❺ 如何根據vs工程構建makefile文件

1、用makefile.ammakefile.in的,需要用automake生成的;

2、如果在windows下,需要裝Cygwin再裝automake;

3、然後生成相應的config文件晌核胡和Makefile;

4、如果是工程文件的,需要新建工程,然後倒入所有源代碼。makefile一個工程中的源文件不計其數,其按類型宴攔、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後氏仔編譯,哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因為makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。

❻ makefile預配置失敗沒有提供腳本怎麼辦

makefile預碧裂配置失敗沒有提供腳本需要重新編譯。根據查詢相關資料信息,一個工程中的源文件不計其數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,碧世哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因為makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。一個工程中的源文件不計其數,其按類型,功能,模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯悔慧閉,甚至於進行更復雜的功能操作,因為makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。

❼ Linux基礎中,shell腳本和makefile文件的差別是什麼啊,求詳細點嘛

你可以認為makefile是shell腳本「派生」出來的。最樸素的makefile可以完全通過gcc等語句實現,在這種情況下也就是shell腳本了。但是為了方便,makefile引入了大量的語法用來使編譯鏈接變得簡單,所以和shell腳本還是不同的。
可以參考:http://apps.hi..com/share/detail/31232485

❽ makefile獲取目錄所有文件名

您想問的是makefile如何獲取目錄所有文件名嗎?在Linux下用Shell命令。
在Linux下用漏賀凱Shell命令,輸入FILESN:= $(foreach v,$(FILESN-1),$(wildcard $(v)/*))指令即可獲取。
makefile是一個工程中的源文件不計其數,其按類返喚型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定, makefile就像一個Shell腳本拍悶一樣,可以執行操作系統的命令。

❾ Makefile詳解

make 命令執行時,需要根據一些規則來決定按照怎麼樣的方式去 編譯和鏈接程序 ,這些規則就由 makefile 文件所指定。如果我們 makefile 文件寫的足夠好,make 命令會自動地根據當前的文件修改的情況來確定哪些文件需要重編譯,從而自己編譯所需要的文件和鏈接目標程序。

首先,本文將給出一個makefile文件的示例,以便大家能有一個直觀感受,這個例子來源於 GNU的make使用手冊 。在這個例子中,我們的工程有8個c文件,和3個頭文件,我們要寫一個makefile來告訴make命令如何編譯和鏈接這幾個文件。例子如下:

這個例子里 make 的編碼規則如下:

a. 如果這個工程沒有編譯過,那麼我們的所有c文件都要編譯並被鏈接。
b. 如果這個工程的某幾個c文件被修改,那麼我們只編譯被修改的c文件,並鏈接目標程序。
c. 如果這個工程的頭文件被改變了,那麼我們需要編譯引用了這幾個頭文件的c文件,並鏈接目標程序。

在詳細拆解上一節的 Makefile 之前,先來看下 Makefile 的基本範式。

target可以是一個 1) object file(可執行文件) ,2) 可執行文件 ,還可以是個3) label(標簽) ,關於標簽這個特性,在後面的 偽目標 章節還會有敘述。

prerequisites 就是,要生成那個target所需要的文件或是目標。 command 也就是 make 需要執行的命令,可以是任意的
shell 命令。

這是一個文件的依賴關系,也就是說,target 這一個或多個的目標文件依賴於 prerequisites 中的文件,其生成規則定義在 command 中。同時, prerequisites 中如果有一個以上的文件比target文件要新的話, command 所定義的命令就會被執行。這就是 Makefile 的規則,也是 Makefile 中 最核心 的內容。

有了這些規則後,再來分析上面的例子。在這個 makefile 中,目標文件(target)包含:

依賴文件(prerequisites)就是冒號後面的那些 .c 文件和 .h 文件。每一個 .o 文件都有一組依賴文件,而這些 .o 文件又是執行文件 edit 的依賴文件。

在定義好依賴關系後,後續的那一行定義了如何生成目標文件的系統命令, 一定要以一個tab鍵作為開頭 。 make 會比較
targets 文件和 prerequisites 文件的修改日期,如果 prerequisites 文件的日期要比targets文件的日期要新,或者 target 不存在的話,那麼,make就會執行後續定義的命令。

我們可以把這個內容保存在名字為 makefile 或 Makefile 的文件中,然後在該目錄下直接輸入命令 make 就可以生成可執行文件edit。如果要刪除執行文件和所有的中間目標文件,那麼,只要簡單地執行一下 make clean 就可以了。 註:反斜線()是換行符的意思,這樣比較便於閱讀。

這里要說明一點的是, clean 不是一個文件,它只不過是一個動作名字,有點像C語言中的 lable 一樣,其冒號後什麼也沒有,那麼,make就不會去找它的依賴性,也就不會自動執行其後所定義的命令。要執行其後的命令(不僅用於 clean,其他 lable 同樣適用),就要在 make 命令後顯式指出這個 lable 的名字。這樣的方法非常有用, 我們可以在一個 makefile 中定義不用的編譯或是和編譯無關的命令,比如程序的打包,程序的備份 ,等等。

在默認的方式下,也就是我們只輸入make命令。那麼,

這就是整個 make 的依賴性,make 會一層又一層地去找文件的依賴關系,直到最終編譯出第一個目標文件。在找尋的過程中,如果出現錯誤,比如最後被依賴的文件找不到,那麼make就會直接退出,並報錯,而對於所定義的命令的錯誤,或是編譯不成功,這些都不在 make 職責范圍內。

通過上述分析,我們知道,像 clean 這種,沒有被第一個目標文件直接或間接關聯,那麼它後面所定義的命令將不會被自動執行,不過,我們可以顯示要 make 執行。即命令 make clean ,以此來清除所有的目標文件,以便重編譯。

在上面的例子中可以看到,後綴為 .o 的一大串文件名寫了兩次,這樣比較費時費力,而且如果文件有所增減,要修改的地方也非常多,對以後的維護造成困難。在這種情形下,我們可以在Makefile里使用變數代替這一大串依賴文件,這里變數的使用方式基本類似於shell腳本里變數的使用方法。

我們可以在makefile一開始就這樣定義:

那麼接下來我們就可以很方便地在我們的Makefile中以 $(objects) 的方式來使用這個變數了,於是如果有新的 .o 文件加入,我們只需簡單地修改一下 objects 變數就可以了。

GNU 的 make 很強大,它可以自動推導文件以及文件依賴關系後面的命令,於是我們就沒必要去在每一個 .o 文件後都寫上類似的命令。因為,我們的make會自動識別,並自己推導命令。

只要make看到一個 .o 文件,它就會自動的把 .c 文件加在依賴關系中,如果make找到一個 FILENAME.o ,那麼 FILENAME.c ,就會是 FILENAME.o 的依賴文件。並且 cc -c FILENAME.c 也會被推導出來,於是,我們的makefile 再也不用寫得這么復雜。我們的新makefile就可以這么寫了。

這種方法,也就是make的**。上面文件內容中,「.PHONY」表示,clean是個偽目標文件。

熱點內容
查ip地址伺服器數量 發布:2024-04-25 20:49:48 瀏覽:620
安卓手機單核性能為什麼不高 發布:2024-04-25 20:48:07 瀏覽:56
群暉php 發布:2024-04-25 20:00:35 瀏覽:884
怎麼查看我的wifi密碼 發布:2024-04-25 18:54:43 瀏覽:757
fckeditorforjava 發布:2024-04-25 18:50:27 瀏覽:624
優酷上傳視頻需要多久 發布:2024-04-25 18:33:05 瀏覽:675
inf12編譯器 發布:2024-04-25 18:15:39 瀏覽:99
撲克總督3安卓哪裡下載 發布:2024-04-25 18:10:02 瀏覽:395
什麼網站是php 發布:2024-04-25 18:03:42 瀏覽:221
java教程免費下載 發布:2024-04-25 18:02:01 瀏覽:443