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