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

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

权重:中

相关推荐
fsnine5 分钟前
机器学习——数据清洗
人工智能·机器学习
小猿姐1 小时前
KubeBlocks AI:AI时代的云原生数据库运维探索
数据库·人工智能·云原生·kubeblocks
算法_小学生1 小时前
循环神经网络(RNN, Recurrent Neural Network)
人工智能·rnn·深度学习
xixingzhe21 小时前
多人同时导出 Excel 导致内存溢出
服务器·设计
吱吱企业安全通讯软件1 小时前
吱吱企业通讯软件保证内部通讯安全,搭建数字安全体系
大数据·网络·人工智能·安全·信息与通信·吱吱办公通讯
云手机掌柜2 小时前
Tumblr长文运营:亚矩阵云手机助力多账号轮询与关键词布局系统
大数据·服务器·tcp/ip·矩阵·流量运营·虚幻·云手机
盲盒Q2 小时前
《频率之光:共振之战》
人工智能·硬件架构·量子计算
飞哥数智坊2 小时前
DeepSeek V3.1 发布:我们等的 R2 去哪了?
人工智能·deepseek
爱分享的飘哥2 小时前
第八十三章:实战篇:文 → 图:Prompt 控制图像生成系统构建——从“咒语”到“神作”的炼成!
人工智能·计算机视觉·prompt·文生图·stablediffusion·diffusers·text-to-image
ciku2 小时前
Spring Ai Advisors
人工智能·spring·microsoft