文中所使用的Linux版本是:Ubuntu
01 make工具和makefile的引入
當(dāng)源碼文件比較多的時候不適合通過直接輸入gcc來編譯,需要一個自動化編譯的工具
make工具的工作包括:
1.如果只修改了某幾個源文件,則只編譯這幾個源文件
2.如果某個頭文件被更改了,則重新編譯所有包含該頭文件的源文件
make工具主要用于完成自動化編譯,make編譯時需要makefile文件提供編譯文件
02 Vim編輯器操作Makefile
配置Vim編輯器
sudo vi /etc/vim/vimrc
set ts=4——設(shè)置Tab鍵為4個字節(jié)
set nu——每行的開頭顯示行號
(在最下面添加上面兩個語句)
使用步驟
(1)六 制作文件
②編輯以下代碼:
規(guī)則格式:
目標(biāo)... :依賴文件集合...
命令1
命令2
....
(每條命令必須以Tab開始,不能使用空格)
③輸入指令make
④最后輸入指令make clean 可以清楚所有的.o文件
03Makefile基本語法
makefile變量的使用
objects = main.o input.o calcu.o
主:$(對象)
GCC -o main $(對象)
賦值“=”
名稱 = 管理員1
當(dāng)前 =$(名稱)
名稱 = 管理員
打印:
@echo 當(dāng)前:$(當(dāng)前)
這里打印的值時admin,而不是admin1,因?yàn)榇蛴〉氖亲罱K變量的值
賦值“:=”
名稱 = 管理員1
當(dāng)前 :=$(名稱)
名稱 = 管理員
打印:
@echo 當(dāng)前:$(當(dāng)前)
這里打印的值時admin1,而不是admin。 這就是和“=”的區(qū)別
賦值“? =”
當(dāng)前 ?=你好
打印:
@echo 當(dāng)前:$(當(dāng)前)
//這里打印hello
當(dāng)前:=管理員
當(dāng)前?=你好
打印:
@echo 當(dāng)前:$(當(dāng)前)
//這里打印的值時admin1,而不是admin。 這就是和“=”的區(qū)別
自動化變量
@,%,<,?,^,+,$*
最常用的三個變量:@,<,$^
功能表:
偽目標(biāo)
偽目標(biāo)不代表真正的目標(biāo)名,一般的目標(biāo)名都是要生成文件,而偽目標(biāo)不代表真正的目標(biāo)名,在執(zhí)行make命令時通過指定這個偽目標(biāo)來執(zhí)行其所在規(guī)則定義的命令
如果在工作目錄下有相同的文件時,需要聲明偽目標(biāo),例如. PHONY:XXX
-
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210417 -
VIM
+關(guān)注
關(guān)注
0文章
134瀏覽量
15353 -
編譯
+關(guān)注
關(guān)注
0文章
661瀏覽量
33048 -
編輯器
+關(guān)注
關(guān)注
1文章
806瀏覽量
31293 -
Makefile
+關(guān)注
關(guān)注
1文章
125瀏覽量
19221
發(fā)布評論請先 登錄
相關(guān)推薦
Linux Makefile通用模板詳解
![<b class='flag-5'>Linux</b> <b class='flag-5'>Makefile</b>通用模板詳解](https://file1.elecfans.com/web2/M00/8F/B1/wKgaomTRn_eAMK_yAAAU_6pWDWY432.jpg)
![](https://file1.elecfans.com/web2/M00/83/14/wKgZomRl1jGAHa7sAAAV9FDk9nQ371.png)
#硬聲創(chuàng)作季 #Linux 學(xué)Linux-1.16 make工具和Makefile的引入-1
![](https://file1.elecfans.com/web2/M00/83/14/wKgZomRl1jGAHa7sAAAV9FDk9nQ371.png)
#硬聲創(chuàng)作季 #Linux 學(xué)Linux-1.17 Makefile基本語法-1
![](https://file1.elecfans.com/web2/M00/85/8A/wKgaomRmM3SAUv19AAGnDEGYITQ056.png)
#硬聲創(chuàng)作季 #Linux 學(xué)Linux-1.17 Makefile基本語法-2
![](https://file1.elecfans.com/web2/M00/85/8B/wKgZomRmM3SACf_xAAE5vLMVclg014.png)
#硬聲創(chuàng)作季 #Linux 學(xué)Linux-1.17 Makefile基本語法-3
![](https://file1.elecfans.com/web2/M00/83/14/wKgZomRl1jGAHa7sAAAV9FDk9nQ371.png)
#硬聲創(chuàng)作季 #Linux 學(xué)Linux-3.05.2 Makefile前期所作的內(nèi)容-1
![](https://file1.elecfans.com/web2/M00/85/8D/wKgZomRmM7aAErxAAAHfigffZBg385.png)
#硬聲創(chuàng)作季 #Linux 學(xué)Linux-3.05.2 Makefile前期所作的內(nèi)容-2
如何解決嵌入式Linux Makefile遇到的問題
基于Linux 2.6內(nèi)核Makefile分析
![基于<b class='flag-5'>Linux</b> 2.6內(nèi)核<b class='flag-5'>Makefile</b>分析](https://file.elecfans.com/web2/M00/49/C9/pYYBAGKhvF-AaNxuAAAWx5Gmzlo629.jpg)
關(guān)于Linux 2.6內(nèi)核Makefile的分析
linux makefile教程
Linux最新2.6內(nèi)核的Makefile體系詳細(xì)資料分析
虛擬機(jī):Linux的Makefile使用for編譯多個目標(biāo)文件
![虛擬機(jī):<b class='flag-5'>Linux</b>的<b class='flag-5'>Makefile</b>使用for編譯多個目標(biāo)文件](https://file.elecfans.com/web1/M00/BF/9C/pIYBAF7we2uADt_WAAAarRv5GrU957.png)
評論