linux下命令行下编译c程序
C 是所有版本的UNIX上的系统语言.
C在过去的二十年中有了很大的发展.在80年代末期美国国家标准协会(AmericanNationalStandardsInstitute)发布了一个被称为ANSIC的C语言标准.这更加保证了将来在不同平台上的C的一致性.在80年代还出现了一种C的面向对象的扩展称为C++.
Linux上可用的C编译器是GNUC编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布.你能在Linux的发行光盘上找到它.
随SlackwareLinux发行的GNUC编译器(GCC)是一个全功能的ANSIC兼容编译器.如果你熟悉其他操作系统或硬件平台上的一种C编译器,你将能很快地掌握GCC.这和java在命令行下
编译也很类似我们将在下面介绍如何使用GCC和一些GCC编译器最常用的选项.
格式gcc[option][sourcefilename]
gcc的选项十分繁多,大约有上百中,不过平时常用的不是非常多,我们将要介绍一些常用的选项:
如果你想指定生成目标文件的名字那么你可以加上-o选项,命令如下:
gcc-ohellohello.c
gcc也允许你只编译源程序,这样可以只检查编译时刻的错误,有利也调试程序,用-c选项可以达到这个目的
命令如下:
gcc-chello.c
结果生成了一个中间代码hello.o文件
编译选项告诉GCC在为C代码产生了汇编语言文件后停止编译.GCC产生的汇编语言文件的缺省扩展名是.s.-E选项指示编译器仅对输入文件进行预处理.当这个选项被使用时,预处理器的输出被送到标准输出而不是储存在文件里.
之后你可以对上述中间代码进行链接运行,使用命令:
gcc -o hello.out hello.c 或者 gcc -o hello hello.o然后执行hello.out或hello运行程序
优化选项
当你用GCC编译C代码时,它会试着用最少的时间完成编译并且使编译后的代码易于调试.易于调试意味着编译后的代码与源代码有同样的执行次序,编译后的代码没有经过优化.有很多选项可用于告诉GCC在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件.这些选项中最典型的是-O和-O2选项.
-O选项告诉GCC对源代码进行基本优化.这些优化在大多数情况下都会使程序执行的更快.-O2选项告诉GCC产生尽可能小和尽可能快的代码.-O2选项将使编译的速度比使用-O时慢.但通常产生的代码执行速度会更快.
GCC支持数种调试和剖析选项.在这些选项里你会最常用到的是-g和-pg选项.
选项告诉GCC产生能被GNU调试器使用的调试信息以便调试你的程序.GCC提供了一个很多其他C编译器里没有的特性,在GCC里你能使-g和-O(产生优化代码)联用.这一点非常有用因为你能在与最终产品尽可能相近的情况下调试你的代码.在你同时使用这两个选项时你必须清楚你所写的某些代码已经在优化时被GCC作了改动.关于调试C程序的更多信息请看下一节"用gdb调试C程序".
如下命令gcc-c-ghello.c
pg选项告诉GCC在你的程序里加入额外的代码,执行时,产生gprof用的剖析信息以显示你的程序的耗时情况.
关于ggc的详细信息可用man gcc来查看文章转载自网管之家:http://www.bitscn.com/os/linuxbc/200701/97701.html