国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

詳解linux下make命令的使用方法

2024-08-28 00:00:42
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了linux下make命令的使用方法,Linux 下 make 命令是系統管理員和程序員用的最頻繁的命令之一,感興趣的朋友可以參考一下

本文我們將用一些實例來討論 make 命令背后的工作機制。

Make 如何工作的
對于不知道背后機理的人來說,make 命令像命令行參數一樣接收目標。這些目標通常存放在以 “Makefile” 來命名的特殊文件中,同時文件也包含與目標相對應的操作。更多信息,閱讀關于 Makefiles 如何工作的系列文章。

當 make 命令第一次執行時,它掃描 Makefile 找到目標以及其依賴。如果這些依賴自身也是目標,繼續為這些依賴掃描 Makefile 建立其依賴關系,然后編譯它們。一旦主依賴編譯之后,然后就編譯主目標(這是通過 make 命令傳入的)。

現在,假設你對某個源文件進行了修改,你再次執行 make 命令,它將只編譯與該源文件相關的目標文件,因此,編譯完最終的可執行文件節省了大量的時間。

Make 命令實例
下面是本文所使用的測試環境:

OS ―― Ubunut 13.04Shell ―― Bash 4.2.45Application ―― GNU Make 3.81

下面是工程的內容:

$ ls anotherTest.c Makefile test.c test.h

下面是 Makefile 的內容:

all: test test: test.o anotherTest.o   gcc -Wall test.o anotherTest.o -o testtest.o: test.c   gcc -c -Wall test.c anotherTest.o: anotherTest.c   gcc -c -Wall anotherTest.c clean:   rm -rf *.o test

現在我們來看 Linux 下一些 make 命令應用的實例:

1. 一個簡單的例子

為了編譯整個工程,你可以簡單的使用 make 或者在 make 命令后帶上目標 all。

$ make gcc -c -Wall test.c gcc -c -Wall anotherTest.c gcc -Wall test.o anotherTest.o -o test

你能看到 make 命令第一次創建的依賴以及實際的目標。

如果你再次查看目錄內容,里面多了一些 .o 文件和執行文件:

$ ls anotherTest.c anotherTest.o Makefile test test.c test.h test.o

現在,假設你對 test.c 文件做了一些修改,重新使用 make 編譯工程:

$ make gcc -c -Wall test.c gcc -Wall test.o anotherTest.o -o test

你可以看到只有 test.o 重新編譯了,然而另一個 Test.o 沒有重新編譯。

現在清理所有的目標文件和可執行文件 test,你可以使用目標 clean:

$ make cleanrm -rf *.o test$ lsanotherTest.c Makefile test.c test.h

你可以看到所有的 .o 文件和執行文件 test 都被刪除了。

2. 通過 -B 選項讓所有目標總是重新建立

到目前為止,你可能注意到 make 命令不會編譯那些自從上次編譯之后就沒有更改的文件,但是,如果你想覆蓋 make 這種默認的行為,你可以使用 -B 選項。

下面是個例子:

$ makemake: Nothing to be done for `all'.$ make -Bgcc -c -Wall test.cgcc -c -Wall anotherTest.cgcc -Wall test.o anotherTest.o -o test

你可以看到盡管 make 命令不會編譯任何文件,然而 make -B 會強制編譯所有的目標文件以及最終的執行文件。

3. 使用 -d 選項打印調試信息

如果你想知道 make 執行時實際做了什么,使用 -d 選項。

這是一個例子:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旺苍县| 田林县| 浮梁县| 图们市| 临泉县| 怀安县| 尉犁县| 苏尼特左旗| 宿州市| 安宁市| 南皮县| 张掖市| 洪洞县| 昌吉市| 分宜县| 右玉县| 濮阳县| 开原市| 禄丰县| 曲水县| 铜陵市| 云林县| 南昌县| 湖口县| 五大连池市| 宿迁市| 禄丰县| 安多县| 蒙山县| 辰溪县| 南城县| 吉安县| 炉霍县| 桐乡市| 柏乡县| 淳化县| 环江| 榆社县| 铁岭县| 出国| 高安市|