嵌入式面试5 -makefile shell

====

2、 如果有一个简单的helloworld项目目录如下:

tree helloworld

helloworld

|-- file2.h

|-- file1.cpp

|-- file2.cpp

请编写一个Makefile文件。

答:

TARGET = helloworld

CXX = g++

COMPILE := $(COMPILE) file1.cpp

COMPILE := $(COMPILE) file2.cpp

OBJECTS := ( f o r e a c h v a r , (foreach var, (foreachvar,(COMPILE), $(var:.cpp=.o))

.PHONY default clean

default: $(TARGET)
( T A R G E T ) : (TARGET): (TARGET):(OBJECTS)

(CXX) -o (TARGET) $(OBJECTS)

%.o:%.cpp

(CXX) -c <

clean:

@rm -rf (OBJECTS) (TARGET)

讲解1:

foo := a.o b.o c.o // 在变量后追加值

bar := ( f o o : . o = . c ) 这个示例中,我们先定义了一个" (foo:.o=.c) 这个示例中,我们先定义了一个" (foo:.o=.c)这个示例中,我们先定义了一个"(foo)"变量,而第二行的意思是把" ( f o o ) "中所有以" . o "字串"结尾"全部替换成" . c ",所以我们的" (foo)"中所有以".o"字串"结尾"全部替换成".c",所以我们的" (foo)"中所有以".o"字串"结尾"全部替换成".c",所以我们的"(bar)"的值就是"a.c b.c c.c"。

讲解2:

" < "表示所有的依赖目标集(也就是" f i l e 1. c p p f i l e 2. c p p ")," <"表示所有的依赖目标集(也就是"file1.cpp file2.cpp")," <"表示所有的依赖目标集(也就是"file1.cppfile2.cpp"),"@"表示目标集(也就是file1.o file2.o")

讲解3:

$(foreach ,,

)


这个函数的意思是,把参数;中的单词逐一取出放到参数
;所指定的变量中,然后再执行< text>;所包含的表达式。每一次

;会返回一个字符串,循环过程中,

;的所返回的每个字符串会以空格分隔,最后当整个循环结束时,

;所返回的每个字符串所组成的整个字符串(以空格分隔)将会是foreach函数的返回值。



或者简单点的:

helloworld: file1.o file2.o

g++ -o helloworld file1.o file2.o

file1.o:file1.cpp

g++ -c file1.cpp

file2.o:file2.cpp file2.h

g++ -c file2.cpp

clean:

rm file1.o file2.o helleworld

权重:中

====

12.在Linux系统中, 哪个文件你可以存储用于创建用户目录的系统用户默认文件?(D)

A./usr/tmp

B./etc/default

C./etc/skel

D./etc/users

权重:中

====

Linux默认的可执行bin文件路径是什么

答:/bin, /usr/bin

权重:中

====

Linux默认的库文件路径是什么

答:/lib, /usr/lib

权重:中

====

Linux的启动脚本一般在哪里

答:rc.d、etc/profile等

权重:中

====

21.Linux执行ls,会引起哪些系统调用(BCD)【多选】

A nmap

B read

C execve

D fork

解析:任何shell都会执行 exec 和 fork,而ls会执行read三个加起来

权重:较低

====

6、GCC -g -o test.elf test.c的具体含义.

答:将当前目录下test.c编译成带GDB调试功能的应用程序test.elf。注意,其中应用到了gcc的隐藏规则,本来应该是两步:GCC -o test.elf test.o GCC -c test.c,但是直接用-o test.c的时候gcc会自动推导。-g选项嵌入式应该掌握,-g后程序崩溃后生成的core文件在GDB下可以看到更多的信息,也可以配合GDB在运行时单步执行,设置断点什么的。

权重:中

===

用gcc将test.c编译成一个可执行文件test

答:gcc -o test test.c

权重:中

====

1、一些Linux命令:显示文件、拷贝文件、移动文件、删除文件。

答:显示文件ls,显示隐藏文件ls -a,显示文件详细信息ls -l;

拷贝文件cp source_name dest_name,强制复制文件和目录cp -rf source_name dest_name;移动文件mv source_name dest_name;删除文件rm file_name。

权重:高

====

4、LINUX下查看进程的命令?查看系统资源使用情况的命令?netstat是作什么用的?

答:linux下查看进程的命令,ps命令

使用free-m命令

Netstat命令是查看网络连接的详细状态的命令

权重:较高

====

Linux查看进程信息的命令

答:top

权重:较高

====

Linux搜索文件内容和文件名的命令

答:grep -rn 文件内容

find . 文件名

或者在匹配文件名的文件中查找文件内容

find . filename | xargs grep -rn filecontent

权重:中

====

描述*在查找和正则表达式中的含义

答:表示0个或多个任意字符

权重:中

====

6、解释命令ls -a | more具体含义.

答:分页显示当前目录下包含隐藏文件在内的所有文件。

权重:中

相关推荐
JAVA面经实录91739 分钟前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编
阿拉斯攀登1 小时前
安全与可控性:输出校验、权限控制
人工智能·chatgpt·agent·memory·claude·知识库·向量数据库
冬奇Lab1 小时前
每日一个开源项目(第152篇):SAG - 用 SQL JOIN 代替 PageRank 做多跳 RAG 检索
人工智能·开源
冬奇Lab1 小时前
Workflow 系列(09):主流框架对比——Prompt-based、LangGraph、Temporal、n8n 如何选
人工智能·工作流引擎
程序员老猫2 小时前
vide coding 个人产品,那就从博客开始吧
人工智能·程序员·全栈
geo搜搜果数据2 小时前
实测5大AI平台品牌排名:复现GEO监测流程
人工智能·langchain·搜搜果
minge00013 小时前
【世界杯中的AI】(2026-07-05)当足球遇见AI:7月5日世界杯的“人机共舞”与冷门之夜
人工智能·科技·世界杯
IT_陈寒3 小时前
闭包陷阱让我加了两天班,JavaScript你真行
前端·人工智能·后端
wumingxiaoyao3 小时前
从 0 开始学 AI:第 2 课,AI、机器学习、深度学习和大模型是什么关系?
人工智能·深度学习·机器学习·ai·大模型·llm