i.MX8MM處理器采用了先進的14LPCFinFET工藝,提供更快的速度和更高的電源效率;四核Cortex-A53,單核Cortex-M4,多達五個內核 ,主頻高達1.8GHz,2G DDR4內存、8G EMMC存儲。千兆工業級以太網、MIPI-DSI、USB HOST、WIFI/BT、4G模塊、CAN、RS485等接口一應俱全。H264、VP8視頻硬編碼,H.264、H.265、VP8、VP9視頻硬解碼,并提供相關歷程,支持8路PDM接口、5路SAI接口、2路Speaker。系統支持Android9.0(支持獲取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系統。適用于智能充電樁,物聯網,工業控制,醫療,智能交通等,可用于任何通用工業和物聯網應用、
【公眾號】迅為電子
【粉絲群】258811263(加群獲取驅動文檔+例程)
第十九章 Linux 工具之make 工具和 makefile 文件
本章內容對應視頻講解鏈接(在線觀看):
Linux 工具之make 工具和 makefile 文件 →?https://www.bilibili.com/video/BV1M7411m7wT?p=19
前面我們在編寫linux上第一個程序hello world 的時候是直接使用 gcc 命令的。我們編譯一個程序是非常的簡單的,直接輸入gcc 然后跟上程序的名稱再跟上指定生成程序的名稱,就可以很輕松的編譯出hello這個可執行文件了。但是如果我們以后工作的時候要編譯一個工程,這個工程里面有很多的源文件,這時候我們全部使用這個命令來編譯那就非常的麻煩了,而且如果我們修改了一個源文件,那么我們使用命令來編譯就要再次執行一遍這個過程,就會非常的耗時間。
如果有小伙伴以前學習過單片機,大家可以類比下單片機開發軟件 keil里面的單獨編譯和全部編譯。單獨編譯是很省時間的,全部編譯就會非常的耗時間,我們使用命令來編譯就相當于我們單片機軟件中的全部編譯。為了解決編譯一個工程非常繁瑣這個問題,前人就給我們發明了編譯輔助工具 make 工具,它的編譯思路是非常簡單的,它會在編譯之前先比較哪個文件的時間發生了改變,如果說這個文件它修改的時間要晚于編譯生成的文件,那么它就會按照要求重新構建這些文件,而不是說再浪費時間重新構建其他的文件了。假如在單片機上用keil寫了一個 c文件,這個工程里邊別的文件沒有改,那么我們就不用點全部編譯,只要編譯一下我們修改過的文件就可以了。make 也是這樣的,只不過它比較聰明,它不用再人為的去判斷了,在編譯之前會自動幫我們判斷。
19.1 使用make?工具
make工具是編譯輔助工具,用來解決使用命令編譯工程非常繁瑣的問題。
調用這個命令工具:我們在windows上編程使用ide ,我們有圖形界面,有相應的按鈕,比如說build 或者run 來編譯。其實make 這個編譯輔助工具使用也是非常簡單的,我們在控制臺上直接輸入make命令,它就會自動調用make工具。
作者直接在這個目錄下輸入make ,然后報錯了,因為我沒有告訴make這個工具它按照什么規則來編譯我們的程序。如下圖所示。
19.2 makefile?
Makefile 就是描述了整個工程編譯連接等規則的文件。我們在終端輸入完make命令之后,調用make工具,make就會在當前目錄按照文件名就會找makefile 文件,Makefile 的命名必須是makefile 或 Makefile ,m大寫小寫都是可以的。
作者剛才輸入命令報錯的原因是因為在當前目錄下是沒有 makefile 這個文件的,作者這里新建一個 Makefile 文件,然后在當前目錄下輸入 make 命令,我輸入完 make 命令,它就會調用 make 工具,make 工具就會在當前目錄下找到 makefile 這個文件,這里又報錯了,因為作者這里創建的makefile 文件,他雖然找到了但是里面是空的,因為沒有包含任何的規則。如下圖所示。
作者先給大家寫一個簡單的來試一下,打開 makefile 文件,敲的時候一定要按 Tab 首行縮進,不能用空格,然后我們輸入內容,保存退出,如下圖所示。
然后輸入 make ,在當前這個目錄下,成功的生成 hello 這個可執行文件,執行一下,可以看到成功輸出了,到這里我們的編譯流程就已經講完了,我們也成功的利用makefile 文件和make工具,把hello.c 編譯成了hello可執行文件。如下圖所示。
我們弄清楚了什么是make工具,怎么來調用make工具,makefile 又是什么,弄清楚了他們的關系后,后面我們再學習makefile語法和裸機編寫makefile時,就非常的容易了。