|
GCC编译器的使用
; b# [' c9 a/ D5 `
) F% b) f9 e% i1 X7 h来源:http://www.hackerxfiles.net/
( O8 l: p2 W4 C! k7 R- U首先检查是否在你的机器上安装了GCC,使用命令: ( P+ Q% h9 s |; z) ?6 T
9 ^/ m- P5 q* g7 }9 ~8 \! w7 k7 A$ L$ _6 U, c
可用rpm -q gcc 检查。
* g; Y) }8 n7 V: [. [+ f4 Q, S如果沒有安裝,請依序檢查並安裝下面各RPM
( z* O3 d# b/ F! c libbinutils 4 j2 `0 I* D# w% k1 n, i
binutils " \4 U: R8 g% L9 q. \
make
. I" w2 p! N4 T8 M. ?9 Uglibc-devel / A% P4 P3 }; f* Z
gcc-cpp
: A) v0 [3 V% s- Sgcc 3 E, {" A( M, z2 v0 {- y
1 I* |* C3 Q3 x: W4 V0 a
看下面的例子:test.c
: D, K# Q# i2 q/ q3 v% b5 ?#include<stdio.h> ' [5 W4 ~4 u& U& O
main()
, Q+ N% l& D* f4 `5 [{ char *str="I like Linux! I advices you jion in the Linux World"; : b1 ?$ y) X( o3 j* U
printf("%s ",str); 8 k# o- I" f) P% _% u1 W
exit(0); : x6 s* p/ i4 f. ]. Y
}
& j; t* W8 ]' I. h( d% `# W" m使用gcc编译。输入gcc -c test.c得到目标文件test.o.-c命令表示对文件进行编译和汇编。但并不连接。如果再健入gcc -o ../bin/test test.o,那么将得到名为test的可执行文件。其实这两不可以一气呵成,gcc ../bin/test test.c.如果程序没有错误救生成了可执行文件。也许你会觉得基于命令行的编译器比不上如VC之类的集成开发环境,的确gcc的界面要改进,但是你一旦熟练了就会感到。gcc的效率如此之高。可以告诉大家的是Linux底下强大的C/C++集成开发环境Kdevelope和Vc一样强大,使用了Gcc编译器。
T" T) u0 R8 O K1 L- F' oGNU C编译器 即gcc是一个功能强大的ANSI C兼容编译器,你会操作其他操作系统下的一种C编译器,能很快掌握GCC,我也是学了不久的GCC. : [7 L1 Y' Q" z9 E0 ?
1、使用Gcc,Gcc是基于命令行的,使用时通常后跟一些选项和文件名。Gcc的基本用法如下: gcc [options] [filenames] 命令行选项制定操作将对命令行上的每个给出的文件执行。 & [) W$ F0 }: b ?; ^
2、GCC的常用选项 - A7 a' N8 A& _' s7 Y- K5 v9 Q7 A
编译选项:gcc有超过100个的编译选项可用。具体的可以使用命令man gcc察看
+ ?8 G m2 S* I8 L% b优化选项:用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。有很多的选想可以告诉GCc在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。这些选项中最典型的就是-O和-O2。-O选项告诉gcc对源代码进行基本优化。-O2选项告诉Gcc产生尽可能小的和尽可能快的代码。还有一些很特殊的选项可以通过man gcc察看。 9 o1 m% u4 P- ^
调试和剖析选项:GCC支持数种调试剖析选项。在这些选项中最常用的是-g和-pg.-g选项告诉gcc产生能被GNU调试器(如gdb)使用的调试信息,以便调试用户的程序。-pg选项告诉gcc在用户的程序中加入额外的代码,执行时,产生gprof用的剖析信息以显示程序的耗时情况。
; Z2 A& L m; T0 E3、使用gdb
6 ^, a+ h) |: u/ \0 @使用方法:在命令行中健入gdb并按回车就可以运行gdb了,启动gdb后,能在命令行上制定很多的选项,也可以下面的方式来运行gdb: gdb filename 用这种方式运行gdb时,能直接指定想要调试的程序。在命令行上健入gdb -h得到一个有关gdb的选项的说明简单列表。
! U Q6 ^% z; Y编译代码以供调试,为了使gdb工作,必须使程序在编译时包含调试信息,调试信息包含程序里的每个变量的类型,在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联。: o: ]# ~3 ~: T/ ?+ n
关于gcc的大体就写这么多吧,根多的信息可以查找帮助,记得学习Linux的一大武器man或者info命令,下次在介绍一下使用c/C++编写大型程序的makefile文件和make命令。7 N! r8 s& @" ]; s9 g1 Q0 `; V+ o7 o
8 r0 s! }8 t& o9 x
9 F- H% w. B& `# i9 [: }2 m; V
' C' c9 X( [1 M( d/ W6 o5 y! u
|