gcc编译器的使用
2004年4月20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、java、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC 3.4.0比以前版本更好地支持了C++标准。本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程。
安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。
系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中我采用这个方案安装GCC 3.4.0,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。
按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。
1. 下载
在GCC网站上()或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。
2. 解压缩
根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):
% tar xzvf gcc-3.4.0.tar.gz
或者
% bzcat gcc-3.4.0.tar.bz2 | tar xvf -
新生成的gcc-3.4.0这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。
在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。
3. 建立目标目录
目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。
例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录${srcdir}是同级目录):
% mkdir gcc-build
% cd gcc-build
以下的操作主要是在目标目录 ${objdir} 下进行。
4. 配置
配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。
配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):
% ${srcdir}/configure --prefix=${destdir} [其它选项]
例如,如果想将GCC 3.4.0安装到/usr/local/gcc-3.4.0目录下,则${destdir}就表示这个路径。
在我的机器上,我是这样配置的:
% ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java
将GCC安装在/usr/local/gcc-3.4.0目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。
5. 编译
% make
这是一个漫长的过程。在我的机器上(P4-1.6),这个过程用了50多分钟。
6. 安装
执行下面的命令将编译好的库文件等拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限):
% make install
至此,GCC 3.4.0安装过程就完成了。
6. 其它设置
GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。
6.1 gcc、g++、gcj的设置
要想使用GCC 3.4.0的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。
首先,查看原来的gcc所在的路径:
% which gcc
在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34
% ln -s ${destdir}/bin/gcj gcj34
这样,就可以分别使用gcc34、g++34、gcj34来调用GCC 3.4.0的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
6.2 库路径的设置
将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。
例如,如果GCC 3.4.0安装在/usr/local/gcc-3.4.0目录下,在RH Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:
setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH
7. 测试
用新的编译命令(gcc34、g++34等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。
8. 根据需要,可以删除或者保留${srcdir}和${objdir}目录。
② Win7濡备綍浣跨敤GCC缂栬疟鍣
棣栧厛锛屼綘闇瑕佸畨瑁単cc缂栬疟鍣ㄣ傝繖閲屾垜灏变笉璇︾粏璁蹭简锛屽彲浠ャ备笅闱㈡垜𨱒ヨ磋村备綍浣跨敤gcc缂栬疟鍣锛坵in7涓嬶级銆傛ラゅ备笅锛氾纸浣犱篃鍙浠ヤ妇涓鍙崭笁锛屾ラら兘宸涓嶅氾级
棣栧厛锛屾垜浠妫楠実cc鏄钖﹀畨瑁呮垚锷燂纴鎴戜滑镓揿紑cmd锻戒护琛屻傦纸win + R阌锛夛纴璋冨嚭杩愯岋纴杈揿叆cmd纭瀹氩嵆鍙銆
鎴戜滑鍦ㄥ懡浠よ岃緭鍏 g++ -v 锛屾煡鐪嫔畨瑁呯殑鐗堟湰銆傚傛灉瀹夎呮垚锷燂纴浼氩嚭鐜扮粨鏋溿
鐜板湪鎴戜滑寮濮嬩娇鐢╣cc锛岄栧厛鎴戜滑鍦ㄤ竴涓娌℃湁涓鏂囩殑鏂囦欢鐩褰曚笅鏂板缓涓涓鏂囨湰鏂囦欢锛岀劧钖庤緭鍏helloworld浠g爜锛堣繖閲屼綘鍙浠ョ敤c锛屼篃鍙浠ョ敤c++锛夛纴鎴戣繖閲岀敤c𨱒ュ啓 #includestdio.h int main() { printf("hello ,world!\n"); return 0; } Ctrl + S 淇濆瓨锛岀劧钖庡皢鏂囦欢镄勫悗缂鏀逛负 .c 锛岋纸鏂囦欢钖崭笉瑕佹湁涓鏂囷级
铹跺悗鎴戜滑鍦ㄥ懡浠よ岀敤cd 鎸囦护镓惧埌鏂囦欢镓鍦ㄧ殑鏂囦欢澶广傜劧钖庤繍琛屾寚浠 g++ 鏂囦欢钖嶏纸鍖呮嫭钖庣紑锛屼腑闂存湁涓绌烘牸锛夈傚洖杞︼纴姝ゆ椂锛屽傛灉娌℃姤阌欙纴璇存槑鎴愬姛浜嗐傜幇鍦ㄤ綘鐪嬬湅鏂囦欢镓鍦ㄧ殑鐩褰曪纴鏄涓嶆槸鐢熸垚浜嗕竴涓 a.exe镄勬枃浠躲傚癸纴杩椤氨鏄鏂扮紪璇戞垚锷熺殑鍙镓ц屾枃浠躲傝繖镞讹纴浣犲彧闇瑕佸湪锻戒护琛岃緭鍏a.exe鍗冲彲镓ц屾ゆ枃浠躲备篃鍙鍙屽嚮镓ц屻
婕旂ず灏卞埌杩欓噷浜嗭纴濡傛灉链夐梾棰桡纴鍙浠ヨ窡鎴戠暀瑷锛屾垜浼氩敖鎴戞墍鐭ユ潵甯锷┿傝嫢鏋滆夊缑链夊府锷╃殑璇濓纴涓嶈佸缮璁扮偣璧炲摝銆傝阿璋锛
③ gcc的使用技巧
首先检查是否在你的机器上安装了GCC,使用命令:
可用rpm -q gcc检查。
如果没有安装,请依序检查并安装下面各RPM
libbinutils
binutils
make
glibc-devel
gcc-cpp
gcc
看下面的例子:test.c #include<stdio.h>intmain(){char*str=IlikeLinux!;printf(%s,str);return0;}使用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++集成开发环境Kdevelop和Vc一样强大,使用了Gcc编译器。
GNU C编译器 即gcc是一个功能强大的ANSI C兼容编译器,你会操作其他操作系统下的一种C编译器,能很快掌握GCC.
1、使用Gcc,Gcc是基于命令行的,使用时通常后跟一些选项和文件名。Gcc的基本用法如下: gcc [options] [filenames] 命令行选项制定操作将对命令行上的每个给出的文件执行。
2、GCC的常用选项
编译选项:gcc有超过100个的编译选项可用。具体的可以使用命令man gcc察看
优化选项:用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。有很多的选项可以告诉GCC在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。这些选项中最典型的就是-O和-O2。-O选项告诉gcc对源代码进行基本优化。-O2选项告诉GCC产生尽可能小的和尽可能快的代码。还有一些很特殊的选项可以通过man gcc察看。
调试和剖析选项:GCC支持数种调试剖析选项。在这些选项中最常用的是-g和-pg.-g选项告诉gcc产生能被GNU调试器(如gdb)使用的调试信息,以便调试用户的程序。-pg选项告诉gcc在用户的程序中加入额外的代码,执行时,产生gprof用的剖析信息以显示程序的耗时情况。
3、使用gdb
使用方法:在命令行中键入gdb并按回车就可以运行gdb了,启动gdb后,能在命令行上制定很多的选项,也可以下面的方式来运行gdb: gdb filename 用这种方式运行gdb时,能直接指定想要调试的程序。在命令行上健入gdb -h得到一个有关gdb的选项的说明简单列表。
编译代码以供调试,为了使gdb工作,必须使程序在编译时包含调试信息,调试信息包含程序里的每个变量的类型,在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联。
关于gcc的大体就写这么多吧,更多的信息可以查找帮助,记得学习Linux的一大武器man或者info命令,下次在介绍一下使用C/C++编写大型程序的makefile文件和make命令。
④ 如何用GCC在linux下编译C语言程序
在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器,假设我们有下面一个非常简单的源程序(hello.c):
int main(int argc,char **argv)
{
printf("Hello Linux
");
}
要编译这个程序,我们只要在命令行下执如橘耐行:
gcc -o hello hello.c
gcc 编译器就会为我们生成一个hello的可执行渣春文件.执行./hello就可以看到程
序的输出结果了
⑤ 如何在Windows平台下使用GCC编译器
先去Cygwin网站(www.cygwin.com)下载一个安装文件(setup.exe),这个文件体积很小,只有不到300KB。然后双击运行setup.exe。因为是第一次安装,所以必须凯则激选择从Internet在线安装,也可以先从Internet下载安装文件,然后再手动安装。我选择后者,因为这样,以后我可以在不联网的时候也能安装。
2、环境变量的配置
在(系统属性-->高级-->环境变量-->系统变量 中)(以下目录都根据自己的电脑MinGW所在位置不同而改变)
a.在PATH的值中加入“C:Program FilesMinGWStudioMinGWin”。这是寻找gcc编译器的路径。如果PATH中还有其他内容,需要用英文状态下分号进行分割
b.新建LIBRARY_PATH变量,在其值中加入“C:Program FilesMinGWStudioMinGWlib”。这是标准库存放的路径。
c.新建C_INCLUDE_PATH变量,在其值中加入“C:Program FilesMinGWStudioMinGWinclude”。这是Include查找头文件的路径。
3、验证gcc是否正常运行
在cmd控制台窗口下面,输入gcc -v。若已经成功安装好,会显示gcc的版本信息。
⑥ 在ubuntu系统中如何用GCC编译运行一个C程序
1、确定安装了gcc编译器后,接下来用vim编辑一个c文件。