当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/115999.html

相关文章:

  • 获40余家主机厂青睐,这家OTA「吸金王」完成超亿元B2轮融资!
  • CGI, FastCGI, WSGI, uWSGI, uwsgi分别是什么?
  • Android T 窗口层级相关的类(更新中)
  • 【云原生】深入掌握k8s中Pod和生命周期
  • openKylin+KingbaseES+Nginx安装
  • lc1.两数之和
  • c# 初始化列表,并给列表里面所有的元素进行初始化
  • Java笔记(三十):MySQL(上)-- 数据库、MySQL常用数据类型、DDL、DML、多表设计
  • SQL笔记-正态分布函数(二)
  • 【LeetCode】数据结构题解(12)[用栈实现队列]
  • 嵌入式Linux下LVGL的移植与配置
  • leetcode每日一练-第70题-爬楼梯
  • 设备使用RTMP推流到安防监控EasyCVR视频汇聚平台,为何只有FLV格式无法播放?
  • arcgis宗地或者地块四至权利人信息提取教程
  • 乐鑫首创|使用 ESP RainMaker® 私有云定制 Matter 生态
  • 【算法|数组】快慢指针
  • C++字符串:使用 std::string
  • 目前Java后端就业前景怎么样?
  • C语言基础(持续更新)
  • 从源码层面深度剖析Spring循环依赖 | 京东云技术团队
  • Distance 2023牛客暑期多校训练营6 B
  • 【Pandas】学习笔记之groupby()、agg()、transform()
  • 使用正则表达式 移除 HTML 标签后得到字符串
  • Java中String方法魔性学习
  • Smartbi 权限绕过漏洞复现(QVD-2023-17461)
  • springboot自定义错误消息
  • 微信小程序申请步骤
  • 嘉楠勘智k230开发板上手记录(四)--HHB神经网络模型部署工具
  • 微信小程序的自定义TabBar及Vant的使用
  • canvas实现代码雨