3.嵌入式linux工具的使用(vscode的使用) &4. gcc常用编译选型 | 您所在的位置:网站首页 › c语言怎么改文件名称和名字 › 3.嵌入式linux工具的使用(vscode的使用) &4. gcc常用编译选型 |
vscode
配置好创建好的环境 chmod -R(-R对目录下所有子文件一次更改权限) 当命令行中以root身份mkdir一个目录,并在vscode中打开编辑,可能出现编辑问题;因为当前系统用户是zdm,而文件是以root创建,会出现权限问题 插件:(Extension) Tabnine(自动补全) 其余有效率的插件可以自行百度 windows下的vscode可以连接linux系统 (当linux很卡的时候或者连接远程的服务器的时候) Qtcreator1.编译器gcc gcc是GNU提供的编译器(unix下的叫cc) 编译工具链——>交叉工具链 2.什么叫交叉编译:C语言的编译过程详解 - 知乎 (zhihu.com) 一个源文件到可执行文件:预处理,编译,汇编,链接,这四个步骤; 预处理(不进行代码检查):头文件展开(#include),宏替换(#define),条件编译(#ifdef)(基本上处理以#开头的代码 编译:检查语法,转成汇编,生成汇编文件(后缀是.s或者.S) 汇编:编译汇编文件,生成目标文件(后缀.o) 链接:链接所有目标文件,生成符号表,生成可执行文件 hello.i 预处理器产生的文件hello.s 编译器编译后产生的文件hello.o 汇编程序翻译后的目标文件hello.exe 可执行文件(Linux系统会产生hello.out文件)→.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 和#include "stdio.h"的区别??? 【搜索路径不同:先在系统的头文件目录搜索(/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不可以是为什么??? 如下图 工具链 |
CopyRight 2018-2019 实验室设备网 版权所有 |