• 嵌入式岗位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 ,,)
    (3)功能:把字串中的字符串替换成
    (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文件;

  • 相关阅读:
    【论文笔记】UNet
    Jeecg Online代码生成器--一对多代码生成
    防止忘了,记录一下
    在使用SpringBoot时遇到的异常总结(持续更新...)
    Java开发备战 - JavaSe(基础篇)
    接口自动化测试实践指导(中):接口测试场景有哪些
    如果一个人不爱你了,你只需拿回两样东西
    Spring @ComponentScan 自定义扫描规则
    51单片机晶体管数字编码
    B站画质补完计划(3):智能修复让宝藏视频重焕新生
  • 原文地址:https://blog.csdn.net/weixin_42031299/article/details/126861614