配置好创建好的环境
chmod -R(-R对目录下所有子文件一次更改权限)
当命令行中以root身份mkdir一个目录,并在vscode中打开编辑,可能出现编辑问题;因为当前系统用户是zdm,而文件是以root创建,会出现权限问题
插件:(Extension)
Tabnine(自动补全)
其余有效率的插件可以自行百度
windows下的vscode可以连接linux系统
(当linux很卡的时候或者连接远程的服务器的时候)
1.编译器gcc
gcc是GNU提供的编译器(unix下的叫cc)
编译工具链——>交叉工具链
C语言的编译过程详解 - 知乎 (zhihu.com)
一个源文件到可执行文件:预处理,编译,汇编,链接,这四个步骤;
预处理(不进行代码检查):头文件展开(#include),宏替换(#define),条件编译(#ifdef)(基本上处理以#开头的代码
编译:检查语法,转成汇编,生成汇编文件(后缀是.s或者.S)
汇编:编译汇编文件,生成目标文件(后缀.o)
链接:链接所有目标文件,生成符号表,生成可执行文件
→.c>.s>.o>.elf
(不同的处理器有不同的汇编:
开发用的平台叫做:宿主机; 目标的平台叫:目标机
电脑上是x86处理器,是由x86汇编生成的可执行文件;再将此可执行文件移到手机上,手机是arm处理器,于是在手机上无法运行;
想要在宿主机上编译程序,然后能在目标机上运行,这样的过程叫做交叉编译,需要交叉编译器)
下图中使用交叉编译器:编译出的可执行文件,在Linux下就不能运行,只能在arm平台上了
-o(k可执行重命名:elf格式的特点:???)
-S(进行编译阶段,会进行语法检查)
-c(进行汇编阶段)
[当头文件不在当前目录下时使用(也可以在头文件里#include “./test/add.h”)]
-I 【gcc -I/home/zdm/241/may/test hello.c add.c -o hello 】
-I:指定头文件所在的第三方路径
(linux开发工具.04gcc常用编译选型)
在集成开发环境里,需要指定头文件的路径(在属性里设置),而gcc可以更改命令
-E 【gcc -E hello.c > hello.i】{
这行命令是在执行C语言编译过程中的预处理阶段,其中:
gcc
是 C 语言编译器的命令。-E
标志告诉编译器只进行代码预处理,而不进行编译、汇编和链接等步骤。hello.c
是需要被预处理的源代码文件名。>
符号是将标准输出结果重定向到指定文件名。hello.i
是输出文件的名字,预处理后的代码将被输出到这个文件。因此,这行命令的意思是将源代码文件 hello.c
进行预处理并将预处理后的结果重定向输出到名为 hello.i
的文件中。}
c语言系统自带的文件都在:/usr/include/stdio.h
#include
【搜索路径不同:<>先在系统的头文件目录搜索(/usr/include/),没有就报错
“”先在当前目录下查找,若没有,再到系统的头文件目录搜索,若再没有就报错】
使用规范:<>一般包含系统头文件,""一般包含的是自定义文件
-O1/-O2/O3(编译优化)[自行学习,它内部是怎么优化的???]
(1条消息) gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化_gcc -o2_沈二月的博客-CSDN博客
[gcc -O1 hello.c -o a.out]
[time ./hello a.out ] 可以计算运行的时间
-w 和-Wall(开关警告)
【gcc -w hello.c -o hello.out】关闭所有警告
【gcc -Wall -O3 hello.c -o hello.out】打开所有警告,并用最有效率的运行方式
vscode中:
gcc -c -I./test add.c demo1.c 可以,而gcc -c -I./test add.c demo1.c -o demo1.out不可以是为什么??? 如下图
工具链