通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。GCC是Linux平台下最常用的编译程序,它是Linux平台编译器的事实标准。同时,在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器。GCC之所以被广泛采用,是因为它能支持各种不同的目标体系结构。例如,它既支持基于宿主的开发(简单讲就是要为某平台编译程序,就在该平台上编译),也支持交叉编译(即在A平台上编译的程序是供平台B使用的)。
一、gcc的编译过程
gcc的编译过程分为预处理、编译、汇编、连接四个子过程,每个过程的命令如下:
预处理: gcc -E test.c -o test.i
编译: gcc -S test.i -o test.s
汇编: gcc -c test.s -o test.o
连接: gcc test.o -o test
二、假定存在代码hello.c,则
分步编译:
1、gcc -E hello.c -o hello.i
2、gcc -S hello.i -o hello.s
3、gcc -c hello.s -o hello.o
4、gcc hello.o -o hello
其实也可以一步完成上面四个步骤:
gcc -Wall hello.c -o [hello]
若最后一个参数省略,则输出文件默认为a.out
最后执行文件
./hello
即可查看运行的结果。
gcc -V //查看gcc的版本号
在使用gdb调试之前,要使用-g选项,如gcc -g -o hello hello.c
-Wall选项为警告提示,打开所有类型语法警告
优化选项-O或-O2