*1、Linux:gcc
unix:cc
2、gcc的特点:
GNU编译工具链中的一个编译器;
可以实现交叉编译。
汇编的特点:
能够访问硬件;
每个CPU都有自己的汇编语言
**PC机:**x86体系结构–x86汇编
**手机、移动终端:**arm体系结构–arm汇编
什么是交叉编译:
在当前CPU平台编译出能够在其它CPU平台下运行的程序
如何实现交叉编译:
安装交叉编译器(arm-linux-gcc)
在编译器里,源文件到可执行经历了哪几个步骤?
预处理–>编译–>汇编–>链接
预处理(-E):
1、头文件展开
2、宏替换
3、条件编译(-D)
#include <stdio.h> VS #include "stdio.h"
头文件的搜索路径不一样
< >:系统的头文件目录;/usr/include 包含系统的头文件
" ":先在当前目录查找,再到系统头文件目录;包含用户的头文件;
第三方搜索路径:-l
特点:不做语法检查;导致预处理阶段的代码不安全;
编译(-C):
语法检查,词法分析,生成目标文件(.o)
如何编译优化?去除一些无用变量
汇编:
目标文件转化为汇编文件(.o->.s)
C和汇编访问硬件时,如何选用什么语言?
当对硬件做复杂操作时,用C语言;
当对硬件做初始化时,用汇编
其它编译选项:
-w:关闭所有警告信息
-Wall:打开所有警告
-o1 -o2 -o3:编译优化选项
-o:生成文件重命名