3.嵌入式linux工具的使用(vscode的使用) &4. gcc常用编译选型

        vscode

配置好创建好的环境

chmod -R(-R对目录下所有子文件一次更改权限)

当命令行中以root身份mkdir一个目录,并在vscode中打开编辑,可能出现编辑问题;因为当前系统用户是zdm,而文件是以root创建,会出现权限问题

        插件:(Extension)

Tabnine(自动补全)

其余有效率的插件可以自行百度

windows下的vscode可以连接linux系统

(当linux很卡的时候或者连接远程的服务器的时候)

        Qtcreator

        1.编译器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平台上了3.嵌入式linux工具的使用(vscode的使用) &4. gcc常用编译选型_第1张图片

        3.编译选项

-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 的文件中。}

3.嵌入式linux工具的使用(vscode的使用) &4. gcc常用编译选型_第2张图片 vscode下,注释大段代码————想取消注释,将if 0改为if  1就行
3.嵌入式linux工具的使用(vscode的使用) &4. gcc常用编译选型_第3张图片 条件编译

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不可以是为什么???      如下图3.嵌入式linux工具的使用(vscode的使用) &4. gcc常用编译选型_第4张图片

        工具链

你可能感兴趣的:(linux,运维,服务器)