最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

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實例的評論 (共 條)

分享到微博請遵守國家法律
翼城县| 仪征市| 新干县| 四子王旗| 远安县| 邵武市| 焦作市| 社旗县| 兰西县| 龙江县| 新民市| 腾冲县| 永新县| 黄浦区| 温泉县| 青铜峡市| 尼玛县| 眉山市| 张家界市| 新巴尔虎左旗| 泰安市| 乌拉特中旗| 宁强县| 衡山县| 磐安县| 大港区| 兰西县| 怀来县| 原阳县| 涿鹿县| 福清市| 旺苍县| 汪清县| 永德县| 齐齐哈尔市| 多伦县| 依安县| 沙坪坝区| 交城县| 墨脱县| 吉林市|