嵌入式面试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具体含义.
答:分页显示当前目录下包含隐藏文件在内的所有文件。
权重:中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值