接触gcc,预编译 (gcc -E), 编译 (gcc), 汇编 (as),和 连接 (ld)。
假如有一个源程序xxx.c
1.在命令行下使用 通过 gcc xxx.c
2.编译器会生成一个可执行文件a.out , 可以命令行 中输入 a.out
3.每次进行编译时,都会出现一个新的a.out 将之前的覆盖
4.可以用- o 来完成对该文件起名字。 命令行输入 gcc -o xxx xxx.c
5.编写一个程序,通过编辑软件例如notepad++,程序保存为yyy.h
6.而编译器是用来编译,c程序的,所以要把yyy.h 加入到xxx.c中进行编译
7.就有了编程时候出现的头文件 #include “yyy.h”
8.加进去以后,再编译一次看一下有没有错误,命令行输入 gcc xxx.c
9.这样编译的时候其实是将两个部分合起来的,而预编译也可以通过命令去看 , 输入 -E (预编译)
10.预编译的作用有三,一、把include了的文件复制到到.c下 二、实际的内容,代替了代码预编译中的那条语句 三、调用宏的地方使用宏替换
11.编译只是其中的一个过程,将自己写的代码转换为汇编,同时查看有无错误语法存在。
12.as是将汇编语言转换为机器可以识别的机器语言的,汇编还是不能够在CPU上直接使用的,命令行中用-c 将.c 的文件转换为.o 的文件(目标文件)
13.连接的过程是将这些不同的目标文件,即.o 的文件组合成可执行文件
14. 通过连接将两个目标文件进行连接 ,命令行输入 gcc -o xxx xxx.c yyy.o (将两者连接起来,创建一个可执行文件xxx)
以上就完成了编译的过程,程序可以正常运行还需要保证其他非语法错误的问题。