linux系统的C编译器为gcc,它是GNU推出的功能强大的编译工具,因为UNIX系统的编译器为cc,所以在Linux系统还保留一个链接cc,用于和UNIX的向后兼容。
其中g++和c++与gcc和cc的使用参数大致相同
gcc/cc常用命令
-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。
-O:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
1 假设源程序文件名为test.c
#include <stdio.h>
void main()
{
printf("Hello world! \n ");
}
输入 gcc test.c
将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
2 输入 gcc -o 指定生成的输出文件
将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
gcc -o exp test.c
得到可执行文件为exp
3 输入gcc -E 仅执行编译预处理
gcc -o test.i -E test.c
将test.c预处理输出test.i文件。
4 输入 gcc -S 将C代码转换为汇编代码;
gcc -S test.i将预处理输出文件test.i汇编成test.s文件
5 输入 gcc -c 仅执行编译操作,不进行连接操作。
gcc -c test.s将汇编输出文件test.s编译输出test.o文件。
6 无选项链接
gcc test.o -o test
将编译输出文件test.o链接成最终可执行文件test。
7 输入 gcc -O
gcc -O1 test.c -o test使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
8 多个文件一起编译
gcc test1.c test.c -o test将test1.c和test.c分别编译后链接成test可执行文件。2分别编译各个源文件,之后对编译后输出的目标文件链接。
gcc -c test1.c #将test1.c编译成testfun.o
gcc -c test.c #将test.c编译成test.o
gcc -o test1.o test.o -o test #将test1.o和test.o链接成test
其他参数