嵌入式面试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具体含义.

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

权重:中

相关推荐
回眸&啤酒鸭3 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅3 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein3 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
未济3 天前
linux 配置环境变量
linux
傲世仙尊3 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
LaughingZhu3 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk