嵌入式面试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 <var>,,
<text>
)


这个函数的意思是,把参数;中的单词逐一取出放到参数
<var>;所指定的变量中,然后再执行< text>;所包含的表达式。每一次
<text>
;会返回一个字符串,循环过程中,
<text>
;的所返回的每个字符串会以空格分隔,最后当整个循环结束时,
<text>
;所返回的每个字符串所组成的整个字符串(以空格分隔)将会是foreach函数的返回值。
</text>
</text>
</text></var>
</text></var>

或者简单点的:

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具体含义.

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

权重:中

相关推荐
苏苏susuus1 小时前
机器学习:load_predict_project
人工智能·机器学习
科技小E1 小时前
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
人工智能·安全·智能手机
bubiyoushang8882 小时前
Windows11 WSL2 Ubuntu编译安装perf工具
linux·运维·ubuntu
猿饵块2 小时前
视觉slam--框架
人工智能
行云流水剑3 小时前
【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南
linux·学习·安全
yvestine3 小时前
自然语言处理——Transformer
人工智能·深度学习·自然语言处理·transformer
SuperW3 小时前
OPENCV图形计算面积、弧长API讲解(1)
人工智能·opencv·计算机视觉
xuanwojiuxin4 小时前
linux panic-propagation
linux·运维·服务器
山海不说话4 小时前
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
人工智能·python·计算机视觉·视觉检测
虹科数字化与AR5 小时前
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
人工智能·ar·ar眼镜·船舶智造·数字工作流·智能装配