国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

空調(diào)維修技術(shù)支持東莞網(wǎng)站建設(shè)國(guó)家最新新聞

空調(diào)維修技術(shù)支持東莞網(wǎng)站建設(shè),國(guó)家最新新聞,上海市上海中學(xué)校服,自己如何高效有力的維護(hù)一個(gè)網(wǎng)站嵌入式 Linux 入門(mén)第十一課,Make 工具和 Makefile 的引入...... 矜辰所致目錄 前言一、Linux 下多文件編譯二、make 工具和 Makefile2.1 make 和 Makefile 是什么?2.2 通過(guò) STM32 提前熟悉 Makefile2.3 GCC 與 make 的關(guān)系/區(qū)別? 三、一個(gè)簡(jiǎn)單的 Makefi…
嵌入式 Linux 入門(mén)第十一課,Make 工具和 Makefile 的引入...... 矜辰所致

目錄

  • 前言
  • 一、Linux 下多文件編譯
  • 二、make 工具和 Makefile
    • 2.1 make 和 Makefile 是什么?
    • 2.2 通過(guò) STM32 提前熟悉 Makefile
    • 2.3 GCC 與 make 的關(guān)系/區(qū)別?
  • 三、一個(gè)簡(jiǎn)單的 Makefile
  • 結(jié)語(yǔ)

前言

Linux 系列距離上一篇文章已經(jīng)半年多了,因?yàn)楦鞣N事情一直耽擱到現(xiàn)在,很多小伙伴都問(wèn)了好些次,一直在等著,感謝大家支持! 確實(shí)時(shí)間拖得太久了,是時(shí)候重新加油起來(lái)!

簡(jiǎn)單理了理思路,通過(guò)一篇簡(jiǎn)單點(diǎn)的文章過(guò)度一下,上一篇講到了 Linux 下的 C 編程,本文就要引出 Make 以及 Makefile 了。

?? 嵌入式 Linux 入門(mén)系列博文:
嵌入式 Linux 入門(mén)(一、Linux 基本介紹及文件結(jié)構(gòu))
嵌入式 Linux 入門(mén)(二、Linux 文件系統(tǒng)、文件類(lèi)型及權(quán)限管理)
嵌入式 Linux 入門(mén)(三、Linux Shell 及常用命令說(shuō)明)
嵌入式 Linux 入門(mén)(四、Linux 下的編輯器 — 讓人愛(ài)恨交加的 vi )
嵌入式 Linux 入門(mén)(五、Shell 腳本編程上:認(rèn)識(shí) Shell 腳本)
嵌入式 Linux 入門(mén)(六、Shell 腳本編程下:Shell 腳本語(yǔ)法)
嵌入式 Linux 入門(mén)(七、Linux 下的環(huán)境變量)
嵌入式 Linux 入門(mén)(八、Linux 下的軟件安裝)
嵌入式 Linux 入門(mén)(九、Linux 下的磁盤(pán)管理)
嵌入式 Linux 入門(mén)(十、Linux 下的 C 編程)
.
嵌入式 Linux 環(huán)境搭建系列博文:嵌入式 Linux 環(huán)境篇
.
我是矜辰所致,全網(wǎng)同名,盡量用心寫(xiě)好每一系列文章,不浮夸,不將就,認(rèn)真對(duì)待學(xué)知識(shí)的我們,矜辰所致,金石為開(kāi)!

一、Linux 下多文件編譯

在上一篇 Linux 下的 C 編程我們知道了 Linux 下的編譯器為 GCC ,以及如何使用 GCC 進(jìn)行編譯,在文章我們講解 GCC 的編譯,使用的只使用了一個(gè) .c 文件,直接使用

gcc [目標(biāo)文件] -o [想要生產(chǎn)的文件名字]

那在遇到多個(gè) .c 文件的時(shí)候如何處理呢?

實(shí)際上還是使用上面這條指令,其中的 [目標(biāo)文件] 是可以為多個(gè)的。

舉一個(gè)簡(jiǎn)單的例子,我們寫(xiě)了三個(gè).c 文件,內(nèi)容如下:

在這里插入圖片描述

編譯的方式如下圖:

在這里插入圖片描述

這么看起來(lái)是不是感覺(jué)還算簡(jiǎn)單?但是我們可以試想一下,以后做項(xiàng)目的時(shí)候,成千上萬(wàn)個(gè)文件,怎么辦?

我們要考慮2個(gè)主要問(wèn)題:

1、 文件數(shù)量多起來(lái)了以后如何處理?

2、只修改了單個(gè)文件,如何只重新編譯修改過(guò)后的單個(gè)文件?

我們不可能和上面示例一樣手動(dòng)使用 gcc 命令輸入文件名的,而且文件多起來(lái)了,編譯時(shí)間需要很長(zhǎng),使用上面示例的命令,是會(huì)把所有的文件都重新編譯,在后面的 linux 學(xué)習(xí)開(kāi)發(fā)中,項(xiàng)目的編譯時(shí)間可比學(xué)習(xí) 51 、STM32 哪些工程的時(shí)候多得太多,每次都編譯所有文件這種行為肯定是不可取的。

在 Windows 下面我們有各種集成的 IDE 工具,往往只需要一個(gè)按鈕,就可以編譯整個(gè)工程,方便快捷,比如我們熟悉的 Keil,我們只需要點(diǎn)擊 IDE 工具欄目的一個(gè)按鈕,就可以完成我們想要的操作:

在這里插入圖片描述

那么在 Linux 下,我們?cè)撊绾翁幚砟?#xff1f;

這就要用到本文主要說(shuō)明的東西: Make 工具 和 Makefile 。

二、make 工具和 Makefile

首先我們要知道什么是 Make 工具,以及 什么 是 Makefile。

這部分的內(nèi)容時(shí)基本概念,類(lèi)似名詞解釋,大家記住就好,沒(méi)有什么特別需要說(shuō)明的,因?yàn)槲覀兊闹攸c(diǎn)在于知道以及學(xué)會(huì)他們的使用.

2.1 make 和 Makefile 是什么?

make 工具:

make 本質(zhì)上它是一個(gè)程序,是一個(gè)編譯工具。我們?cè)诤竺孢M(jìn)行程序的時(shí)候,都需要使用 make 命令。

使用 make 工具我們可以自動(dòng)完成編譯工作,而且可以有效的處理我們上面提到的問(wèn)題:

  1. 多個(gè)文件的自動(dòng)編譯;
  2. 每次執(zhí)行 make 命令,只重新編譯修改后的文件;
    .
    這里提一句,Linux 是如何判斷文件是否有修改: 文件的修改時(shí)間!就是通過(guò) ls -l 查看的那個(gè)時(shí)間,make 會(huì)根據(jù)依賴(lài)關(guān)系,如果發(fā)現(xiàn)依賴(lài)的文件修改時(shí)間比自己新,那么久會(huì)重新編譯一下這個(gè)依賴(lài)文件)

利用 make 工具可以將大型的開(kāi)發(fā)項(xiàng)目分解成為多個(gè)更易于管理的模塊,可以簡(jiǎn)潔明快地理順各個(gè)源文件之間紛繁復(fù)雜的相互關(guān)系,大大簡(jiǎn)化開(kāi)發(fā)工作,避免不必要的重新編譯 。

make工具通過(guò)一個(gè)稱(chēng)為 Makefile 的文件來(lái)完成并自動(dòng)維護(hù)編譯工作,Makefile文件描述了整個(gè)工程的編譯、連接規(guī)則。

Makefile 文件:

Makefile 是一個(gè)文件,是一個(gè)描述一系列規(guī)則的文件。

Makefile 的 開(kāi)頭 M 要大寫(xiě)!(雖然有的地方說(shuō)大小寫(xiě)都可以,但是保證大寫(xiě),是肯定不會(huì)有莫名其妙的問(wèn)題的)。

make 會(huì)根據(jù) Makefile 文件的規(guī)則規(guī)則執(zhí)行命令,最后完成編譯輸出 。

在 Makefile 文件中:

  • 定義一系列的規(guī)則來(lái)制定源文件編譯后的先后順序
  • 特定的語(yǔ)法規(guī)則、支持函數(shù)定義、函數(shù)調(diào)用
  • 能直接集成操作系統(tǒng)中的命令

這是我們學(xué)習(xí) Linux 的一個(gè)重點(diǎn)對(duì)象,對(duì)于新手來(lái)說(shuō),至少要做到能夠看得懂,會(huì)一定程度的修改 Makefile 。

2.2 通過(guò) STM32 提前熟悉 Makefile

實(shí)際上 STM32 的開(kāi)發(fā),我們也可以用到 Make 工具和 Makefile,如果大家目前也在用 STM32 開(kāi)發(fā),不妨使用 GCC 工具鏈開(kāi)發(fā),這樣也能提前熟悉 Makefile 。

如果是我的粉絲朋友,一定知道現(xiàn)在我做 STM32 都是使用的 gcc 工具鏈,具體可查看文章:

在window下使用 VScode 搭建 ARM 開(kāi)發(fā)環(huán)境

如果想看看簡(jiǎn)單的 Makefile ,大家可以寫(xiě)一個(gè)簡(jiǎn)單的 STM32 工程,然后在 STM32CubeMX 生成工程的時(shí)候選擇 Makefile ,如下圖:

在這里插入圖片描述

然后打開(kāi)工程,就可以看看 ST 工具自動(dòng)生成的 Makefile 文件了,可以讓自己提前熟悉熟悉 Makefile:

在這里插入圖片描述

2.3 GCC 與 make 的關(guān)系/區(qū)別?

經(jīng)常有小伙伴會(huì)被 GCC 與 make 工具搞得糊里糊涂,雖然知道怎么用,但是傻傻分不清楚或者是說(shuō)不明白。

看清楚概念: GCC 是編譯器,make 是一個(gè)命令工具。

感覺(jué)把概念一說(shuō)就清楚了啊, GCC 是一個(gè)編譯 C語(yǔ)言的編譯器, 而 make 是一個(gè)工具,他可以使得編譯工作簡(jiǎn)化,只不過(guò)我們使用的時(shí)候 make 會(huì)調(diào)用 GCC 編譯器去完成編譯工作。

在 Makefile 中我們會(huì)指定執(zhí)行編譯的編譯器類(lèi)型,而且會(huì)根據(jù)指定的編譯器類(lèi)型進(jìn)行對(duì)應(yīng)的命令操作,如下圖:

在這里插入圖片描述

因?yàn)槲覀冊(cè)?linux 下使用的都是 gcc 編譯器,所以 Makefile 中的會(huì)看到我們熟悉的 gcc 的操作命令,我們只不過(guò)是利用 make 工具的自動(dòng)編譯去調(diào)用了 gcc 編譯器 對(duì)工程進(jìn)行編譯。

三、一個(gè)簡(jiǎn)單的 Makefile

上面說(shuō)過(guò),Makefile 是學(xué)習(xí) Linux 的一個(gè)要點(diǎn)之一,對(duì)于 Makefile 說(shuō)明,我會(huì)單獨(dú)分專(zhuān)欄進(jìn)行說(shuō)明介紹,那本文我們剛剛接觸,我們寫(xiě)一個(gè)簡(jiǎn)單的 Makefile 來(lái)編譯文章開(kāi)頭我們示例的3個(gè)文件。

直接先寫(xiě)一個(gè)傻瓜式的,看看 make 工具是否有用,在示例 .c 文件同目錄下,我們新建一個(gè) Makefile 文件,如下:

在這里插入圖片描述

然后試著使用 make 命令看看效果:

在這里插入圖片描述

OK,果然可以 make 直接編譯,但是上面這個(gè) Makefile 是有問(wèn)題的,因?yàn)槊看螆?zhí)行 make ,會(huì)把所有的 .c 文件都重新編譯器一次,實(shí)際使用也不可能這么寫(xiě)。

我們回憶一下上一篇課程的內(nèi)容,一個(gè)C 文件要經(jīng)過(guò)預(yù)處理、編譯、匯編 和 鏈接才能變成可執(zhí)行文件,由不同的 .c 文件生成到不同的 .o 文件,最終才將所有的 .o 文件鏈接成可執(zhí)行文件。

所以我們可分開(kāi)進(jìn)行,把每一個(gè) .c 先生成 .o 文件,然后再由 所有的 .o 文件生成 最終的文件,這樣如果單獨(dú)修改了某個(gè)文件 ,只需要把修改過(guò)的 .c 文件重新編譯就行了,所以我們的 Makefile 應(yīng)該這么寫(xiě):
在這里插入圖片描述

make 的結(jié)果如下:

在這里插入圖片描述

這樣寫(xiě)得好處就是,如果我們只對(duì)某一個(gè).c 文件進(jìn)行修改,他只會(huì)對(duì)修改過(guò)的文件進(jìn)行重新編譯,我們可以測(cè)試一下,比如我們修改一下 a.c 文件:

在這里插入圖片描述

上面這個(gè)簡(jiǎn)單的 Makefile ,大家是不是已經(jīng)可以感覺(jué)到 make 工具的方便快捷了!

結(jié)語(yǔ)

本文向大家介紹了一下 Linux 編程時(shí)候使用的 make 工具,如何在沒(méi)有 IDE 工具的 Linux 環(huán)境下高效快捷的編譯工程,就靠 make 工具了。

當(dāng)然,我們的重點(diǎn)在于 Makefile,對(duì)于 Makefile 的寫(xiě)法規(guī)則,更多的內(nèi)容我會(huì)單獨(dú)寫(xiě)文章說(shuō)明的。

對(duì)于入門(mén)的小伙伴來(lái)說(shuō),也沒(méi)有必要一蹴而就,寫(xiě)好 Makefile 固然重要,但是對(duì)于現(xiàn)在一般的應(yīng)用開(kāi)發(fā)來(lái)說(shuō),Makefile 要完全自己從頭寫(xiě)得時(shí)候不多,很多時(shí)候可以找到一個(gè)可用的模板進(jìn)行修改,我們至少要做到可以看懂,可以去修改 Makefile!

好了,本文就到這里,謝謝大家!

http://aloenet.com.cn/news/34142.html

相關(guān)文章:

  • wordpress簡(jiǎn)約企業(yè)主題下載廣州seo技術(shù)外包公司
  • 網(wǎng)絡(luò)推廣合同網(wǎng)站seo優(yōu)化服務(wù)商
  • 北京設(shè)計(jì)院排名前十強(qiáng)湖南網(wǎng)站seo地址
  • 佛山百度網(wǎng)站排名深圳建站公司
  • 惠州網(wǎng)站建設(shè)找惠州邦百度云盤(pán)網(wǎng)頁(yè)登錄入口
  • 查看網(wǎng)站外鏈代碼百度高級(jí)搜索指令
  • 3東莞網(wǎng)站建設(shè)外貿(mào)網(wǎng)站推廣平臺(tái)
  • 搭建一個(gè)20人的辦公網(wǎng)絡(luò)優(yōu)化是什么梗
  • 企業(yè)網(wǎng)站制作 深圳怎樣做推廣營(yíng)銷(xiāo)
  • 優(yōu)狐網(wǎng)站建設(shè)公司網(wǎng)站建設(shè)
  • 作業(yè)做哪些類(lèi)型的網(wǎng)站查權(quán)重網(wǎng)站
  • 永久域名最新網(wǎng)站搭建一個(gè)網(wǎng)站平臺(tái)需要多少錢(qián)
  • 網(wǎng)站開(kāi)發(fā)有哪些要求鄭州seo優(yōu)化阿亮
  • 榆林做網(wǎng)站的公司免費(fèi)seo網(wǎng)站推廣在線觀看
  • 網(wǎng)站模板做網(wǎng)站網(wǎng)絡(luò)營(yíng)銷(xiāo)管理名詞解釋
  • 網(wǎng)站開(kāi)發(fā)和軟件北京搜索優(yōu)化排名公司
  • wordpress滑動(dòng)驗(yàn)證2016汕頭網(wǎng)站建設(shè)方案優(yōu)化
  • 重慶做網(wǎng)站重慶做網(wǎng)站企業(yè)網(wǎng)站推廣方法實(shí)驗(yàn)報(bào)告
  • 新興縣城鄉(xiāng)建設(shè)局網(wǎng)站云搜索app下載
  • 廣告型網(wǎng)站建設(shè)成人本科
  • 濰坊做網(wǎng)站的那家好網(wǎng)絡(luò)推廣公司名字大全
  • 北京公司網(wǎng)站制作電話(huà)網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣外包服務(wù)
  • 香港服務(wù)器做網(wǎng)站日照網(wǎng)絡(luò)推廣公司
  • 基于php技術(shù)的網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化推廣公司
  • 網(wǎng)站建設(shè)簡(jiǎn)稱(chēng)什么網(wǎng)絡(luò)營(yíng)銷(xiāo)工具的特點(diǎn)
  • dede 手機(jī)網(wǎng)站模板seo整站優(yōu)化方案
  • 電信100m光纖做網(wǎng)站windows優(yōu)化軟件
  • 隨州網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)與制作教程
  • 中國(guó)制造網(wǎng) 做網(wǎng)站費(fèi)用網(wǎng)站測(cè)試的內(nèi)容有哪些
  • 自己做的網(wǎng)站百度收索不到友鏈互換平臺(tái)推薦