赞
踩
哎,最近一直忙于秋招,主要找嵌入式软件开发的工作。。。。
下面是我分享的一些面试总结。
照着软件工程的说法说下去,需求分析,搭建大概的架构,然后再进行详细地设计,在这个设计阶段有两个,一个是软件设计,一个是硬件设计。然后再进行代码编写、调试软件。硬件。最后生成产品。
Linux系统中,它是用来编译c语言的编译工具。
gcc main.c 会产生一个由main.c编译后的a.out可执行文件。
简单说一下程序是如何从一个文本文件编译成可执行程序的,四个步骤:
预处理——>编译——>汇编——>链接
gcc -E main.c 只做预处理
gcc -S main.c 程序做到编译处理
gcc -c main.c 程序做到汇编处理
gcc -c main.c -o main.o 做到汇编处理,然后生成main.o二进制文件(重点)
gcc -l dir 将头文件的搜索路径添加到dir目录中,意思就是可以从dir目录搜索头文件
gcc -L dir 将库文件的搜索路径添加到dir目录中,意思就是可以从dir目录搜索库文件
头文件就是 *.h的文件,库文件就是 lib 或者 so 或者.a的文件
这里可以想一想如何制作库文件。
gcc main.c -lm 这个是链接库文件(math库),在c文件里导入了#include<math.h> 就要用到
如果导入了线程相关库 gcc main.c -lpthread
gcc -g 可执行程序中包含调试信息
gcc -v 输出gcc版本信息,很多软件命令都是-v输出版本信息。
是一个文本编辑器,在Linux系统下,经常拿来修改配置文件,初学者就是使用vim编辑器编辑c语言的。
文本查找:
查找变量x,在视图模式下,就是不可编辑的那个模式 /x 就可以找到第一个。在回车之后,按n键同方向转到下一个匹配的字符串,按N键反方向转到上一个匹配的字符串。
文本替换:
:s/str1/str2 将str1替换为str2
传统通信方式:
1.管道
//需要的头文件 #include <unistd> //创建一个int型,空间为2的数组 int fd[2]; //将这个数组放进pipe函数,这是无名管道 pipe(fd); pid_t pid = fork(); if(pid < 0){ //pid<0 说明进程创建失败 perror("fork");//输出错误信息 } else if(pid == 0){ //子进程 close(fd[0]); //关闭读端 write(fd[1], "Hello", 6); //向管道写数据 } else{ //父进程 close(fd[1]); //关闭写端 char buf[100] = {0}; read(fd[0], buf, sizeof(buf)); //读到buf里面 printf("%s\n", buf); }
2.有名管道
linux中可以创建管道文件 mkfifo f1
#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(int argc, char *argv[]) { pid_t pid = fork(); if(pid < 0){ perror("fork"); return -1; }else if(pid == 0){ //写 int fd = open("f1",O_WRONLY); char buf[100]={0}; while(1){ gets(buf); write(fd,buf,strlen(buf)); } }else{ //读 int fd = open("f1",O_RDONLY); char buf[100] = {0}; while(1){ read(fd,buf,sizeof(buf)); printf("buf=%s\n",buf); memset(buf,0,sizeof(buf)); } } return 0; } ``` 3.信号 ipc对象: 4.共享内存 5.消息队列 6.信号灯集 网络通信: 7.网络套接字(socket),这个比较重要,用于网络编程。 2023年8月28日,作者表示,就这么点内容也好意思说是面试总结?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。