1. 下载 H2+b3y-1a]
WTJ/u001E{ /u001BM$
在GCC网站上(http://gcc.gnu.org/)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。 Xb/u001CB/u001F(</0+
b5LToy:/u0003/u0016/u0007
2. 解压缩 eNK[/u0014P=/u001C-
Y/u0019E~IO5 /u0015/u0017
根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符): 5/u001A@m ,*n&[
/+%~7Bi]z
% tar xzvf gcc-3.4.0.tar.gz ^EX"f/u0018RwNi
或者 UJ/u0012I2L-;Ul
% bzcat gcc-3.4.0.tar.bz2 | tar xvf - u/u001A]IbT/u001AJ'/u0001
/u0008I/u0017k/u00130g(-d
新生成的gcc-3.4.0这个目录被称为源目录,用 ${srcdir}表示它。以后在出现 ${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。 /u000E/u001BE/u001D/u0011n/u0002/u0001M/u001E
/u0016Z>9@/u0008)/u000Fwo
在 ${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。 $H/u001D)^/u001Do!/u0019/u0010
W;vNmg/u000E}mn
3. 建立目标目录 /u00150/u001B p/u0012/u0007ZvW
g/u001E/u0005>l/u001AZ/u0017s
目标目录(用 ${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录 ${srcdir}中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是 ${srcdir}的子目录。 ,/u000FBk5 ( /u0010e
$/u0003dL..QH^K
例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录 ${srcdir}是同级目录): B8@mL-/u0003Z-;
/u001A/nl(tU/u000E#j
% mkdir gcc-build vW+6_41/u0011ZM
% cd gcc-build "hI/u0006Yf7r##
c{q+h/u0013/u001A V=
以下的操作主要是在目标目录 ${objdir} 下进行。 /u0008Liq/u0004o)/u001Bm/u0015
9{Hs1/u0019 MD[
4. 配置 u8f//u0002/u0003/u000F)m/u000E
/u0006e/u0019!/u001Cu/u0016]l/u0004
配置的目的是决定将GCC编译器安装到什么地方( ${destdir}),支持什么语言以及指定其它一些选项等。其中, ${destdir}不能与 ${objdir}或 ${srcdir}目录相同。 sI,cX#h&Y
./u0011@/u0006/u001CH:/u001AP
配置是通过执行 ${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换 ${destdir}): z/u00105@/u000FX/u0007FaQ
'/u0001| /u0014H+5#
% ${srcdir}/configure --prefix= ${destdir} [其它选项] /u0017f/u001F/u000F-~/u001AY/u0006/u0007
UytMnJ/u001D8/u001C8
例如,如果想将GCC 3.4.0安装到/usr/local/gcc-3.4.0目录下,则 ${destdir}就表示这个路径。 e)sR$]i:v
z0[/u0005@O)Sj
在我的机器上,我是这样配置的: 6/u0011?a/u0006`'&/u001D/u0014
/u0007_,drOF|e/u0012
% ../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 /u0005t/,Y<9{/u001Cw
6*Z7J/u0019iQ 0
将GCC安装在/usr/local/gcc-3.4.0目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。 -/u0019/u001C/u0008lo?16w
f/ P0/u0010%/u001E/u0013/u001A
5. 编译 /u0014s~7/u0019a-/u0014J/u001D
S/u0016qa9+/u000E' [
% make /u0003x+Yo#u22/u0013
)/u0016R/u000Fa/u0014: s>
这是一个漫长的过程。在我的机器上(P4-1.6),这个过程用了50多分钟。 CW/u0001eQv9h]X
Z/u001F=/u00038&/u0012`/u0008
6. 安装 {*/u001D;/u001B8`+R&
W/u000E!H/u0005j/u0010/u0003O;
执行下面的命令将编译好的库文件等拷贝到 ${destdir}目录中(根据你设定的路径,可能需要管理员的权限): 5@l5exuG*m
w &YUb,{Y
% make install ,(oolx"X/u001Aa
b`%u}^B {
至此,GCC 3.4.0安装过程就完成了。 ,y"vf^B/u0017E.
/u0015/u001BnG/u0014/u0008TGX/u0013
7. 其它设置 +(`/u001CD'5EB(
&B/u0015 :L/u00149^/u0002
GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在 ${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。 Iu/u0015Fr:/u00153(/u0005
r/u00024K/u001E_/u001AW/u001Ep
7.1 gcc、g++、gcj的设置 /u00101X/u0013h/u0012@x/u0002/u0011
M/u0014/u0002E)='/u0018~E
要想使用GCC 3.4.0的gcc等命令,简单的方法就是把它的路径 ${destdir}/bin放在环境变量PATH T/u0014Z/u0004n5s ~t
;$/u001F]a.9 -
中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。 @QYCoEU8J/u0007
P $r/u001A!/u0014u%W
首先,查看原来的gcc所在的路径: /u001B/u0006od!s5f!
b/u0003$*G&/u0002/u0003d5
% which gcc ILHn~d IC
h}+Gz/u0014={Q^
在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接: /u0003/u0010)9!J $q
EOGz;/u0011/u0018:b&
% cd /usr/bin /@7 4/u0003I/u0018/u00167
% ln -s ${destdir}/bin/gcc gcc34 /u000F/u001A2Aj/u0007P/u00112/u0016
% ln -s ${destdir}/bin/g++ g++34 [i]%PV/u000FGW
% ln -s ${destdir}/bin/gcj gcj34 ; 5!8LmZ0#
SQf.R%cg$/u0010
这样,就可以分别使用gcc34、g++34、gcj34来调用GCC 3.4.0的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。 #4?:/u00124Im#/u0004
/u0016v/u000F 1Jg8L=
7.2 库路径的设置 *"/u0013, B/u0011P]]
5%(xZ /u001E 6
将 ${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。 /u0001W/I D8+:i
b'~IF/u0017Nt*^
例如,如果GCC 3.4.0安装在/usr/local/gcc-3.4.0目录下,在RH Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句: i#y3QCNqf^
/u0011/u0011]t/u0012VXao/u001D
setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib: $LD_LIBRARY_PATH r/u000E?=7#/]
/u00065Y&s+/u0015| /u001A
8. 测试 /u0005;U|^Tsuc`
/u0017Q H%{/u0013r/u00064
用新的编译命令(gcc34、g++34等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。 t/u0019?v/u00180yl/u0001N
L/u0012/u001Ev/u0016/u0006c*L6
9. 根据需要,可以删除或者保留 ${srcdir}和 ${objdir}目录。