gcc(GNU C Compiler)是GCC中的C编译器,它的使用完全基于命令行,和传统的Unix编译器CC类似。
比如我们要编译一个源代码文件a.c,可使用以下命令:
gcc a.c
如果a.c没有问题,能够被正确编译,则会在当前的目录产生一个叫a.out的可执行文件(注意:此处的a.out是默认名字,和a.c中的a没有必然的联系);而如果a.c不能被编译通过,gcc会产生错误(Error)输出(有时会产生警告(Warning)输出,但不影响编译过程),并且终止编译,这些错误(包括警告)输出有助于我们找到程序中的错误。
我们可以以如下方式运行a.out:
./a.out
当然,也可以在编译时决定输的文件名,如:
gcc o
out a.c
这样就编译了a.c文件,且输出的可执行文件名为out,运行这个文件可以:
./out
gcc是一个编译器,编译出的应该是目标代码啊?为什么会产生可执行文件?这是因为,gcc已经调用了默认的链接功能了,我们可以通过如下方法关闭链接,以获得目标代码:
gcc -c -o a.o a.c
编译a.c,但不链接,输出文件的文件名为a.o(此处的a.o已经是二进制的代码了)。
通常情况下,gcc会自动链接标准C语言库,如需要链接其它的函数库,则需要加其它编译选项:
gcc -o -out lm a.c
上面的命令编译a.c文件,链接数学库(libm),并输出可执行文件out。