嵌入式岗位Makefile常见面试题(1)
第一題:變量使用
解析:Makefile中變量的引用格式就是$(變量名),這是沒什么好講的,記住就行。在Makefile中有一些特殊的宏定義需要記住,$@:表示生成的目標(biāo) ;$<:表示生成依賴的文件;$?是執(zhí)行上一條指令的返回值;可以參考博客:《Makefile的基本用法》;
第二題:ifeq的使用
(1)ifeq用來判斷兩個(gè)值是否相等,ifneq用來判斷兩個(gè)值是否不相等;
(2)ifeq和ifneq是Makefile中的兩個(gè)關(guān)鍵字,在Makefile中不用"=“和”!=";
(3)ifeq就是英文單詞"if equal"的縮寫,翻譯過來就是如果相等;ifneq就是英文單詞"if not equal"的縮寫,翻譯過來就是如果不相等;
(4)更多細(xì)節(jié)參考博客:《Makefile中的條件編譯:ifeq、ifneq、ifdef和ifndef》;
第三題:ifneq的使用
ifneq的解析參考第二題,這里強(qiáng)調(diào)一點(diǎn)就是ifeq和ifneq可以互相嵌套使用,組成多層次的判斷邏輯;
第四題:Makefile中增加help信息
(1)在實(shí)際工作中我們編寫Makefile時(shí),一般會(huì)添加help目標(biāo),方便其他人使用Makefile時(shí)可以通過"make help"命令來查看此Makefile的使用方法;
(2)"make -h"和"make --help"是查看make指令的幫助信息,而不是Makefile的help信息;
(3)在Makefile中就不使用define關(guān)鍵字,錯(cuò)的很離譜;
(4)定義的help目標(biāo)是可以使用函數(shù)的,和其他的目標(biāo)沒有任何區(qū)別;
第五題:subst函數(shù)
(1)subst函數(shù)是Makefile自帶的函數(shù),功能是替換字符串,Makefile自帶了一些函數(shù),這些函數(shù)不用去記,能分辨出是函數(shù)并知道怎么查詢即可;
(2)函數(shù)原型:$(subst <from>,<to>,<text>)
(3)功能:把字串<text>中的<from>字符串替換成<to>
(4)返回:函數(shù)返回被替換過后的字符串。
補(bǔ)充:參考博客:《Makefile的函數(shù)調(diào)用詳解》;
第六題:make命令的選項(xiàng)
| -k | 發(fā)生錯(cuò)誤后繼續(xù)執(zhí)行 |
| -n | 只是顯示Makefile的執(zhí)行過程,但不會(huì)真正去執(zhí)行命令,用于調(diào)試Makefile |
| -f | 指定make命令讀取的文件。要記住make是一個(gè)命令,我們平時(shí)執(zhí)行make命令時(shí)并沒有指定文件是因?yàn)閙ake命令會(huì)默認(rèn)去當(dāng)前目錄下讀取名字叫Makefile的文件。當(dāng)我們用-f時(shí),可以指定本次讀取的文件,這時(shí)文件的名字沒有必要一定是Makefile,可以叫任意名字。比如:make -f aaa,其中aaa就是我們通常意義的Makefile文件 |
| -c | 跳轉(zhuǎn)到指定目錄執(zhí)行make命令,一般用來在主Makefile中調(diào)用子Makefile |
第七題:Makefile自帶函數(shù)
(1)上面的都是Makefile自帶的函數(shù),個(gè)人覺得能分辨出這是函數(shù),會(huì)網(wǎng)上查詢就行,沒必要去記,反正記了也會(huì)忘,重點(diǎn)在于理解Makefile中函數(shù)的形式。
(2)參考博客:《Makefile的函數(shù)調(diào)用詳解》;
第八題:Makefile的特殊宏定義
(1) $@表示規(guī)則中的目標(biāo)文件集。在模式規(guī)則中,如果有多個(gè)目標(biāo),那么,"$@“就是匹配于目標(biāo)中模式定義的集合。
(2)$%僅當(dāng)目標(biāo)是函數(shù)庫(kù)文件中,表示規(guī)則中的目標(biāo)成員名。
(3)$^所有的依賴目標(biāo)的集合。
(4)$*這個(gè)變量表示目標(biāo)模式中”%"及其之前的部分。
第九題:
第10行和第13行是命令,需要tab鍵開頭,這是固定格式
第十題:
(1)&&表示前一條命令執(zhí)行成功時(shí),才執(zhí)行后一條命令,可以參考博客:《Linux中的&、&&、|、||、 ? 、 ?、 ?、#》;
(2)選項(xiàng)A:先進(jìn)入到指定目錄,再執(zhí)行make命令,也就是調(diào)用指定目錄下的Makefile;
(3)選項(xiàng)B:include是Makefile的關(guān)鍵字,可以在Makefile文件中用include關(guān)鍵字來引用其他路徑下的Makefile文件,類似C語言引用頭文件;
(4)選項(xiàng)C:-C是make命令的選項(xiàng),先跳轉(zhuǎn)到指定目錄在執(zhí)行make命令;
(5)選項(xiàng)D:-f是make命令的選項(xiàng),指定Makefile文件;
推薦
(1)給大家推薦一個(gè)對(duì)嵌入式工程師十分適用的網(wǎng)站,上面不僅有嵌入式崗位要求的各個(gè)知識(shí)點(diǎn)的面試題、還有編程題,還有各個(gè)公司的面試真題,是學(xué)習(xí)嵌入式知識(shí)不錯(cuò)的網(wǎng)站,推薦大家去刷題和游覽貼吧,不斷充實(shí)自己,升職漲薪不是夢(mèng)。
鏈接:學(xué)習(xí)網(wǎng)站跳轉(zhuǎn)
(2)我也會(huì)每周更新嵌入式各個(gè)知識(shí)點(diǎn)的面試題解析,喜歡的博友可以關(guān)注我,你的點(diǎn)贊和收藏是對(duì)我最大的肯定。
上面的Makefile面試題來自與牛客網(wǎng)的專項(xiàng)練習(xí):題庫(kù)->專項(xiàng)練習(xí)->通信/硬件->編程語言->Makefile;
總結(jié)
以上是生活随笔為你收集整理的嵌入式岗位Makefile常见面试题(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分块详解(优雅的暴力)
- 下一篇: linux mysql 命令行查询 乱码