gcc/g++
Updated:
Contents
Linux GCC 常用命令
GCC的意思是GNU Compiler Collection,是GNU编译器家族的意思。
- 简单编译
|
|
这个程序,一步到位的编译指令为:
gcc test.c -o test
实质上,上述的编译的过程是分四个阶段进行的,即预处理(也称预编译,Preprocessing),编译(Compilation),汇编(Assembly),链接(Linking)。
- 预处理(Preprocessing)
gcc -E test.c -o test.i 或 gcc -E test.c
- 编译为汇编代码(Compilation)
gcc -S test.i -o test.s
gcc的-S选项,表示程序编译期间,生成汇编代码后停止。 - 汇编(Assembly)
gcc -c test.s -o test.o
对于上一节生成的汇编代码test.s,gas汇编器负责将其编译成目标文件。 - 链接(Linking)
gcc test.o -o test
gcc连接器是gas提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。附加的目标文件包括静态连接库和动态连接库。
- 预处理(Preprocessing)
库文件连接
例如我们的程序test.c是在linux上使用c连接mysql,这个时候我们需要去mysql官网下载MySQL Connectors的C库,下载下来解压之后,有一个include文件夹,里面包含mysql connectors的头文件,还有一个lib文件夹,里面包含二进制so文件libmysqlclient.so其中inclulde文件夹的路径是/usr/dev/mysql/include,lib文件夹是/usr/dev/mysql/lib
编译可执行文件
首先我们要进行test.c为目标文件,这个时候需要
`gcc -I /usr/dev/mysql/include test.c -o test.o链接
gcc -L /usr/dev/mysql/lib -lmysqlclient test.o -o test
-static强制链接的时候使用静态库
检错
- -Wall 可以是gcc产生尽可能多的警告信息
gcc -Wall illcode.c -o illcode
- -Werror 在编译程序时带上-Werror选项,那么GCC会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改.
gcc -Werror test.c -o test
- -Wall 可以是gcc产生尽可能多的警告信息