五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網 會員登陸 & 注冊

9.8Makefile實例

2020-08-18 13:53 作者:韋東山  | 我要投稿


視頻教程???

韋東山升級版全系列嵌入式免費視頻_快速入門篇

前面講了那么多Makefile的知識,現在開始做一個實例。

之前編譯的程序002_syntax,有個缺陷,將其復制出來,新建一個003_example文件夾,放在里面。 在c.c里面,包含一個頭文件c.h,在c.h里面定義一個宏,把這個宏打印出來。

c.c:?

c.h:

#define C 1


然后上傳編譯,執(zhí)行./test,打印出:

This is B?

This is C =1


測試沒有問題,然后修改c.h:

#define C 2


重新編譯,發(fā)現沒有更新程序,運行,結果不變,說明現在的Makefile存在問題。

為什么會出現這個問題呢, 首先我們test依賴c.o,c.o依賴c.c,如果我們更新c.c,會重新更新整個程序。 但c.o也依賴c.h,我們更新了c.h,并沒有在Makefile上體現出來,導致c.h的更新,Makefile無法檢測到。 因此需要添加:

c.o : c.c c.h


現在每次修改c.h,Makefile都能識別到更新操作,從而更新最后輸出文件。?

修改Makefile如下:

首先用obj變量將.o文件放在一塊。 利用前面講到的函數,把obj里所有文件都變?yōu)?%.d格式,并用變量dep_files表示。 利用前面介紹的wildcard函數,判斷dep_files是否存在。 然后是目標文件test依賴所有的.o文件。 如果dep_files變量不為空,就將其包含進來。 然后就是所有的.o文件都依賴.c文件,且通過-MD -MF生成.d依賴文件。 清理所有的.o文件和目標文件 清理依賴.d文件。


現在我門修改了任何.h文件,最終都會影響最后生成的文件,也沒任何手工添加.h、.c、.o文件,完成了支持頭文件依賴。


下面再添加CFLAGS,即編譯參數。比如加上編譯參數-Werror,把所有的警告當成錯誤。

現在重新make,發(fā)現以前的警告就變成了錯誤,必須要解決這些錯誤編譯才能進行。在a.c里面聲明一下函數:

void func_b();?

void func_c();


重新make,錯誤就沒有了。

除了編譯參數-Werror,還可以加上-I參數,指定頭文件路徑,-Iinclude表示當前的inclue文件夾下。 此時就可以把c.c文件里的#include ".h"改為#include <c.h>,前者表示當前目錄,后者表示編譯器指定的路徑和GCC路徑。?


視頻教程???

韋東山升級版全系列嵌入式免費視頻_快速入門篇


9.8Makefile實例的評論 (共 條)

分享到微博請遵守國家法律
大姚县| 盖州市| 茂名市| 长宁县| 保靖县| 个旧市| 旬阳县| 金川县| 江津市| 古蔺县| 黔江区| 茶陵县| 建阳市| 双鸭山市| 渑池县| 泗水县| 乡宁县| 元氏县| 碌曲县| 加查县| 靖西县| 京山县| 江都市| 宿松县| 上高县| 张家界市| 花莲县| 普宁市| 伊川县| 浑源县| 西充县| 五河县| 黑河市| 安国市| 阆中市| 凤翔县| 霍山县| 平定县| 永川市| 盐亭县| 邢台市|