国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

韋東山Linux教學(xué)視頻中的makefile文件詳細(xì)介紹

這篇具有很好參考價值的文章主要介紹了韋東山Linux教學(xué)視頻中的makefile文件詳細(xì)介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前言

(1)在學(xué)習(xí)韋東山Linux教學(xué)視頻的時候,他的makefile并沒有做詳細(xì)的介紹。以至于我學(xué)了很長時間對他的makefile文件不理解。所以本文將會詳細(xì)介紹韋東山Linux教學(xué)視頻中的makefile文件含義。
(2)注意:我使用的是韋東山的配套i.max6ull pro開發(fā)板。如果是其他系列開發(fā)板,makefile文件的KERN_DIR = 需要改成你的Linux內(nèi)核路徑。
(3)閱讀本文之前,需要具備一定的makefile語法基礎(chǔ),如果沒有,請先學(xué)習(xí)Linux-GCC介紹+入門級Makefile使用的Makefile介紹部分。
(4)強(qiáng)調(diào):我這里只是幫助各位理解韋東山老師的makefile文件是什么意思,保證你看完之后能夠?qū)@個文件進(jìn)行更改,但是不保證你能夠自己從0寫一個makefile。

韋東山makefile文件源代碼

以下是韋東山老師的makefile文件,我加了一些注釋。


# 1. 使用不同的開發(fā)板內(nèi)核時, 一定要修改KERN_DIR
# 2. KERN_DIR中的內(nèi)核要事先配置、編譯, 為了能編譯內(nèi)核, 要先設(shè)置下列環(huán)境變量:
# 2.1 ARCH,          比如: export ARCH=arm64
# 2.2 CROSS_COMPILE, 比如: export CROSS_COMPILE=aarch64-linux-gnu-
# 2.3 PATH,          比如: export PATH=$PATH:/home/book/100ask_roc-rk3399-pc/ToolChain-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin 
# 注意: 不同的開發(fā)板不同的編譯器上述3個環(huán)境變量不一定相同,
#       請參考各開發(fā)板的高級用戶使用手冊

# 內(nèi)核源碼路徑
KERN_DIR = /home/book/100ask_imx6ull-sdk/Linux-4.9.88

all:
	# -C表示將當(dāng)前的工作目錄切換到指定目錄中,也就是Linux內(nèi)核源碼路徑
	# M=表示模塊源碼目錄
	# pwd表示獲取當(dāng)前文件路徑,因為makefile一般和模塊源碼在同一個路徑,所以這里可以直接使用pwd指令
	# modules表示編譯模塊
	make -C $(KERN_DIR) M=`pwd` modules 
	# 將ledtest.c 編譯成開發(fā)板能夠執(zhí)行的可執(zhí)行文件ledtest
	$(CROSS_COMPILE)gcc -o ledtest ledtest.c 

clean:
	# 將模塊清空	
	make -C $(KERN_DIR) M=`pwd` modules clean
	# 清除過度文件modules.order,這句話沒有用處,上一句也會清除modules.order文件
	rm -rf modules.order
	# 刪除可執(zhí)行文件ledtest
	rm -f ledtest

# 參考內(nèi)核源碼drivers/char/ipmi/Makefile
# 要想把a(bǔ).c, b.c編譯成ab.ko, 可以這樣指定:
# ab-y := a.o b.o
# obj-m += ab.o

# make工具根據(jù)名字將.c編譯成.ko模塊
obj-m += leddrv.o chip_demo_gpio.o


前期準(zhǔn)備工作—設(shè)置交叉編譯工具鏈

(1)因為開發(fā)板和電腦端的架構(gòu)是不一樣的。所以他們的可執(zhí)行文件是不同的,在電腦端能夠運(yùn)行的可執(zhí)行文件,開發(fā)板是跑不了的,反之同理。
(2)為了能夠讓我們編譯出開發(fā)板能夠執(zhí)行的可執(zhí)行文件,就需要先設(shè)置交叉編譯工具鏈。
(3)如果是跟著韋東山老師的視頻課程的來的,教程編譯工具鏈應(yīng)該是永久配置好的。(詳情可看嵌入式Linux應(yīng)用開發(fā)完全手冊V5_IMX6ULL_Pro開發(fā)板,第三篇環(huán)境搭建與開發(fā)板操作,2.6.3節(jié)配置交叉工具鏈)
(4)因為韋東山老師的文檔對交叉工具鏈配置已經(jīng)很詳細(xì)了,所以我不再贅述。這里只是會講解如何查看自己是否永久配置好交叉工具鏈。
(5)打開終端,輸入指令: vim ~/.bashrc

韋東山Linux教學(xué)視頻中的makefile文件詳細(xì)介紹,Linux,linux

(6)
<1>進(jìn)入VIM編輯器之后,輸入: /PATH
<2>如果能夠跳轉(zhuǎn),并且找到如下圖的三行文字,就表示交叉工具鏈已經(jīng)被配置好了。如果沒有進(jìn)行跳轉(zhuǎn),說明沒有被配置好。

韋東山Linux教學(xué)視頻中的makefile文件詳細(xì)介紹,Linux,linux

(7)如果沒有配置好交叉編譯工具鏈,就在命令行輸入如下三行指令。(注意,如果是韋東山配套的i.max6ull就是執(zhí)行這個。其他的板子請自行尋找你的交叉工具鏈配置方法)

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihfexport- 
PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

代碼詳細(xì)介紹

KERN_DIR = …介紹

(1)這一句是進(jìn)行賦值操作,我們會發(fā)現(xiàn),這個makefile中還有其他的KERN_DIR 。
(2)這個就相當(dāng)于C語言的賦值,a = 3。那么此時變量a就是3了,后面只要出現(xiàn)字符a,并且字符a沒有再次賦值,那么a就是代表數(shù)字3。
(3)這個是用來指定Linux的內(nèi)核路徑的。因為我們編譯文件,需要使用到Linux庫函數(shù),所以需要指定Linux路徑。

KERN_DIR = /home/book/100ask_imx6ull-sdk/Linux-4.9.88

all:介紹

(1)如果有makefile 的基礎(chǔ)概念知識,就知道這是一個判斷語句。
(2)因為all:是第一個判斷語句,而且all永遠(yuǎn)不存在,所以只要在終端執(zhí)行make指令,就會執(zhí)行all:下面的指令。

all:
[TAB]命令

make -C $…介紹

(1)-C表示將當(dāng)前的工作目錄切換到指定目錄中,也就是Linux內(nèi)核源碼路徑。因為我們需要調(diào)用Linux內(nèi)核庫函數(shù)。
(2)M=表示模塊源碼目錄,也就是我們寫的驅(qū)動.c文件。
(3)這里的’pwd’效果和在終端執(zhí)行pwd指令效果是一樣的,都是獲得當(dāng)前文件路徑。為makefile一般和模塊源碼在同一個路徑,所以這里可以直接使用pwd指令。
(4)最后面的modules表示編譯模塊

make -C $(KERN_DIR) M=`pwd` modules 

韋東山Linux教學(xué)視頻中的makefile文件詳細(xì)介紹,Linux,linux

$(CROSS_COMPILE)gcc … 介紹

(1)看到這一段代碼,可能有些人會有疑惑,CROSS_COMPILE是什么東西?代碼里面沒有出現(xiàn)過這個玩意啊。
(2)CROSS_COMPILE就是我們在配置交叉編譯工具鏈的時候設(shè)置的玩意。 export CROSS_COMPILE = arm-buildroot-linux-gnueabihf- ,所以說,CROSS_COMPILE就是arm-buildroot-linux-gnueabihf- 。那么$(CROSS_COMPILE)gcc就是arm-buildroot-linux-gnueabihf-gcc,看到這,大家是不是熟悉起來了。沒錯,就是編譯開發(fā)板能夠執(zhí)行的可執(zhí)行文件。
(3)所以這句話就是讓應(yīng)用層的.c文件編譯成開發(fā)板能夠執(zhí)行的可執(zhí)行文件。

$(CROSS_COMPILE)gcc -o ledtest ledtest.c 

clean: 介紹

這個其實是makefile基礎(chǔ)知識,如果我們在命令行輸入make clean。就會執(zhí)行clean:下面的命令。

make -C $(KERN_DIR)…介紹

這個指令就是刪除產(chǎn)生的.ko文件,.o文件,過渡文件modules.order等東西。

make -C $(KERN_DIR) M=`pwd` modules clean

rm -rf modules.order介紹

清除過渡文件modules.order,這句話沒有用處,make -C $(KERN_DIR) M=pwd modules clean也會清除modules.order文件

rm -rf modules.order

rm -f ledtest介紹

這個就是刪除開發(fā)板的可執(zhí)行文件ledtest

rm -f ledtest

obj-m += …介紹(重點(diǎn)?。。。?/h3>

(1)make工具根據(jù)名字將.c編譯成.ko模塊。例如,leddrv.c就會被識別到,編譯成leddrv.ko。chip_demo_gpio.c就會被識別到,編譯成chip_demo_gpio.ko。

obj-m += leddrv.o chip_demo_gpio.o

(2)為了加深理解,如果我們講chip_demo_gpio.o稍微改一下。假如我們不小心少些了一個o,把chip_demo_gpio.o寫成了chip_demo_gpi.o會發(fā)送什么呢?

韋東山Linux教學(xué)視頻中的makefile文件詳細(xì)介紹,Linux,linux

如何根據(jù)自身需求更改這個makefile

(1)首先,我們需要知道自己的內(nèi)核源碼路徑。然后將自己的內(nèi)核源碼路徑更改一下。
(2)根據(jù)自己要編譯成模塊的.c文件名字來在obj-m +=寫數(shù)據(jù)。比如我們想讓SR04.c文件編譯成SR04.ko模塊。obj-m += SR04.o這樣寫即可。

韋東山Linux教學(xué)視頻中的makefile文件詳細(xì)介紹,Linux,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-579546.html

到了這里,關(guān)于韋東山Linux教學(xué)視頻中的makefile文件詳細(xì)介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux(基礎(chǔ)IO、文件權(quán)限、Makefile)

    Linux(基礎(chǔ)IO、文件權(quán)限、Makefile)

    目錄 1、man 手冊 1.1 漢化 1.2 具體使用 2、文件權(quán)限 2.1 權(quán)限理解 2.2 文件詳細(xì)信息查詢 2.3 權(quán)限更改 3、常用函數(shù)接口 3.1 open 3.2 read 3.3?write 3.4?close 3.5 函數(shù)使用示例 4、make與Makefile 4.1 make 與 Makefile區(qū)別 4.2 Makefile的編寫 5、vim簡單操作 安裝中文包 使用三種方式查詢open接口的詳

    2024年02月11日
    瀏覽(42)
  • Github如何使用詳細(xì)介紹(保姆級教學(xué))

    Github如何使用詳細(xì)介紹(保姆級教學(xué))

    目錄 一、Github如何搜索 二、如何判斷一個項目好不好呢? 三、項目的詳細(xì)介紹 1、Code項目頁 2、issues頁面 3、pull request頁面 4、Action頁面 5、Security頁面 6、Insights頁面 四、導(dǎo)航欄的詳細(xì)介紹 1、Explore探索 2、Marketplace市場 3、Codespaces代碼空間 例如搜索:“Java教學(xué)”不用登錄即

    2024年02月03日
    瀏覽(19)
  • 【音視頻 | Ogg】libogg庫詳細(xì)介紹以及使用——附帶libogg庫解析.opus文件的C源碼

    【音視頻 | Ogg】libogg庫詳細(xì)介紹以及使用——附帶libogg庫解析.opus文件的C源碼

    ??博客主頁??:??https://blog.csdn.net/wkd_007?? ??博客內(nèi)容??:??嵌入式開發(fā)、Linux、C語言、C++、數(shù)據(jù)結(jié)構(gòu)、音視頻?? ??本文內(nèi)容??:??介紹libogg庫,并給出ligogg庫使用的例子?? ??金句分享??:??子曰:不患人之不己知,患不知人也。——《論語·學(xué)而篇》。意思是,

    2024年02月05日
    瀏覽(22)
  • 【linux基礎(chǔ)(七)】Linux中的開發(fā)工具(下)--make/makefile和git

    【linux基礎(chǔ)(七)】Linux中的開發(fā)工具(下)--make/makefile和git

    ??博主CSDN主頁:杭電碼農(nóng)-NEO?? ? ?專欄分類:Linux從入門到開通? ? ??代碼倉庫:NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你學(xué)更多操作系統(tǒng)知識 ? ???? 如果你不知道什么是vim和gcc 請先閱讀這兩篇文章后再學(xué)習(xí)本節(jié): 文章一: vim和yum 文章二: gcc/g++ 本章重點(diǎn): 本篇文章會著重講

    2024年02月08日
    瀏覽(21)
  • Redis的簡介,安裝(Linux、Windows),配置文件的修改---詳細(xì)介紹

    Redis的簡介,安裝(Linux、Windows),配置文件的修改---詳細(xì)介紹

    Redis是一個基于 內(nèi)存 的key-value結(jié)構(gòu)數(shù)據(jù)庫。 基于內(nèi)存存儲,讀寫性能高 適合存儲熱點(diǎn)數(shù)據(jù)(熱點(diǎn)商品、資訊、新聞) 企業(yè)應(yīng)用廣泛 1.1、Redis簡介 The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.(開源內(nèi)存數(shù)據(jù)存儲,被數(shù)百萬

    2024年02月13日
    瀏覽(22)
  • 淺談linux中的根文件系統(tǒng)(rootfs的原理和介紹)【轉(zhuǎn)】

    淺談linux中的根文件系統(tǒng)(rootfs的原理和介紹)【轉(zhuǎn)】

    淺談linux中的根文件系統(tǒng)(rootfs的原理和介紹)【轉(zhuǎn)】 轉(zhuǎn)自:https://www.cnblogs.com/sky-heaven/p/13742173.html linux中有一個讓不少初學(xué)者都不是特別清楚的概念,叫作“根文件系統(tǒng)”。我接觸linux前先后后也好幾年了,可是對這個問題,至今也不是特別的清楚,至少無法給出一個很全面

    2024年01月21日
    瀏覽(46)
  • Linux驅(qū)動1:入口與出口、頭文件路徑、makefile編譯

    Linux驅(qū)動1:入口與出口、頭文件路徑、makefile編譯

    目錄 Linux 驅(qū)動兩種運(yùn)行方式 字符設(shè)備驅(qū)動框架 1、創(chuàng)建目錄和編寫文件 2、添加頭文件路徑 3、Makefile編寫和解釋 4、編譯測試 第一種就是將驅(qū)動編譯進(jìn) Linux 內(nèi)核中,這樣當(dāng) Linux 內(nèi)核啟動的時候就會自動運(yùn)行驅(qū)動程序; 第二種就是將驅(qū)動編譯成模塊(Linux 下模塊擴(kuò)展名為.ko),

    2024年02月10日
    瀏覽(34)
  • 韋東山老師 RTOS 入門課程(一)RTOS 介紹,熟悉裸機(jī)的匯編邏輯

    韋東山老師 RTOS 入門課程(一)RTOS 介紹,熟悉裸機(jī)的匯編邏輯

    課程鏈接:韋東山直播公開課:RTOS實戰(zhàn)項目之實現(xiàn)多任務(wù)系統(tǒng) 第1節(jié):裸機(jī)程序框架和缺陷_嗶哩嗶哩_bilibili 裸機(jī):固定順序執(zhí)行。 中斷:可以一直專心做循環(huán)里的事情,直到觸發(fā)中斷。也可以中斷里設(shè)立 flag 在循環(huán)里檢測執(zhí)行,防止中斷超時。 定時器:太多個任務(wù)的時候不

    2024年02月12日
    瀏覽(17)
  • Linux中的工具:yum,vim,gcc/g++,make/makefile,gdb

    Linux中的工具:yum,vim,gcc/g++,make/makefile,gdb

    目錄 1、yum 1.1 查看軟件包: ?1.2 安裝軟件包 1.3 卸載軟件 2、vim 2.1 vim的三種模式 2.2 vim的基本操作 2.3. vim正常模式命令集 2.3.1 插入模式 2.3.2 移動光標(biāo) 2.3.3 刪除文字 2.3.4 復(fù)制 2.3.5 替換 2.3.6撤銷上一次操作 2.3.7 更改 2.3.8 跳至指定的行 2.4. vim末行模式命令集 3、gcc/g++ 3.1 預(yù)處理

    2024年02月10日
    瀏覽(25)
  • [Linux][環(huán)境配置][yum][vim][gcc/g++][gdb][makefile][git]詳細(xì)講解

    [Linux][環(huán)境配置][yum][vim][gcc/g++][gdb][makefile][git]詳細(xì)講解

    本篇文章以Centos為例 通過 yum list 命令可以羅列出當(dāng)前一共有哪些軟件包,由于包的數(shù)目可能非常之多, 使用 grep 命令只篩選出我們關(guān)注的包 yum list | grep sl 注意事項: 軟件包名稱: 主版本號.次版本號.源程序發(fā)行號-軟件包的發(fā)行號.主機(jī)平臺.cpu架構(gòu) “x86_64” 后綴表示64位系統(tǒng)

    2024年04月13日
    瀏覽(45)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包