找回密码
 注册
关于网站域名变更的通知
查看: 408|回复: 1
打印 上一主题 下一主题

redhat linux上安装 gcc编译器

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-3-9 17:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种:; P! q* n* e; L2 C1 E9 G
  1)一种是软件的源代码,您需要自己动手编译它。这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz)。! X' d/ ?, @$ Z3 s5 k
  2)另一种是软件的可执行程序,你只要安装它就可以了。这种软件安装包通常被是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。5 m" d) J# W. X7 O
  当然,也有用rpm格式打包的源代码,用gzip压缩过的可执行程序包。只要您理解了以下的思路,这两种形式的安装包也不在话下了。
9 \6 J5 \! I3 E% g9 M- f+ E  下面,我们就分成两个部分来说明软件安装思路:
' z# J, C8 c: _第一部分:搞定.tar.gz1 D2 A4 P. r; F& L' f
  1.首先,使用tar -xzvf来解开这个包,如:2 }2 K! q) g. T! [
  #tar -xzvf apache_1_3_6_tar.gz8 O( a$ w) R8 O  }6 |
  这样就会在当前目录中创建了一个新目录(目录名与.tat.gz包的文件名类似),用来存放解压了的内容。如本例中就是apache_1.3.6
* u  ?4 Z/ j6 g4 O( H+ a4 F  2.进入这个目录,再用ls命令查看一下所包含的文件,如:
) y7 C2 D: n5 ?: Q# [& T7 O- p  #cd apache_1.3.6
1 P( I8 {0 N2 ]% d4 m4 O4 Z  #ls
' j+ S! j2 X% ~, A  你观察一下这个目录中包含了以下哪一个文件:configure、Makefile还是Imake。
/ A$ j2 r. U) k3 z1 g% z$ D  1)如果是configure文件,就执行:1 w4 O) ]1 L, z; W- r
  #./configure : g& K' N4 ]. m( I5 _
  #make
1 R( e/ v/ w9 ?  #make install
& e; ~/ b' T* P2 R  2)如果是Makefile文件,就执行:2 y. C# V' \, j3 u$ _% |% x
  #make6 R- A! U8 R8 E2 n. H; x, c/ c
  #make install# N  u1 U$ |! i& g+ y0 c' z8 E: J
  3)如果是Imake文件,就执行:
9 d0 D9 t4 ^0 Q5 i+ {4 `  #xmkmf( W# k0 R" f1 B* q  a; u
  #make- j* f' I1 a% V' T. G- k9 l
  #make install% l8 I# u/ q: b' C0 r3 r
  3.如果没有出现什么错误提示的话,就搞定了。至于软件安装到什么地方,通常会在安装时出现。否则就只能查阅一下README,或者问问我,:-)
0 N  s0 |1 C7 ]9 {6 `  如果遇到错误提示,也别急,通常是十分简单的问题:& G% L: |/ f1 N% c. x; A# b
  1)没有安装C或C++编译器;( h) S/ t  W* G. |$ u' w7 h
  确诊方法:执行命令gcc(C++则为g++),提示找不到这个命令。
8 d" n- R3 u0 C  I- v$ ]" b  解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:/ j3 J( _' ~3 B. q
  #rpm -ivh gcc* (哈哈,我们用到了第二种安装方式)" l7 O4 l0 F" Z5 y; T  S& u8 C7 p
  2)没有安装make工具;. D- Q) r* z. U
  确诊方法:执行命令make,提示找不到这个命令。
( \& E% v  \' H- c2 J8 [0 i% O  解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:
. g! H7 d& W3 K1 f& l" v  #rpm -ivh make*8 D3 M& j* a8 I0 H& c) o9 u
  3)没有安装autoconf工具;1 h+ W' c' T  T; y: S3 e% B
  确诊方法:执行命令make,提示找不到这个命令。& E- C$ y8 U8 g: a. v, n( I! O
  解决方法:将Linux安装光盘mount上来,然后进入RPMS目录,执行命令:
$ S8 F1 H! Z: ^  #rpm -ivh autoconf*; M, Y8 P) h( l9 M$ B0 k( ?$ z% i
  4)缺少某些链接库;
- w" X  q7 @; \! K( l8 u3 p  确诊方法:在make时,提示需要某些文件。
8 f: w; c5 C7 P. s, t7 O: j9 ?. X5 D5 `  解决方法:安装包含这个文件的包,这就需要积累了。0 u4 M) D, F' Z# c& M9 i
第二部分:搞定.rpm
& O- ~! ]& n6 j7 T0 @; P! ^9 ?9 y  RPM是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。
" ~" A& Y2 p+ L% J2 k/ ~) L& _/ I% Q  1.安装软件:执行rpm -ivh rpm包名,如:
$ P5 u1 E' E: ~6 U1 k, o6 N" {+ p  #rpm -ivh apache-1.3.6.i386.rpm( B8 K0 Y6 Y% d7 f  E5 w5 F2 b
  2.升级软件:执行rpm -Uvh rpm包名。
: T9 r# b; d; o* s 
2 L0 r& \8 ]1 `" X  3.反安装:执行rpm -e rpm包名。" U6 w  u" L) Z  @$ l5 C' {. ]
  4.查询软件包的详细信息:执行rpm -qpi rpm包名
5 r" ?2 T1 ?+ ]0 @! K6 c  5.查询某个文件是属于那个rpm包的:执行rpm -qf rpm包名. C/ c- l4 |- \/ t! X, y/ U
  6.查该软件包会向系统里面写入哪些文件:执行 rpm -qpl rpm包名
! R( F, j7 G5 @* r( b9 a2 N1 z* Y
1 M) H# j) M# ^9 ^" L7 w: }; L4 [) ^" i, s& t0 n4 [/ X
: d' M6 x  O( u4 L0 C- v
[遗留问题:redhat linux系统上有Redhat Linux Packet Manager,就是Redhat的包管理器,所以如果原来机器没装gcc编译器,装二进制码格式的编译器时,就可以直接下载相适应的rpm包来搞定。可是其它变种的linux系统怎么办呢? 有相应格式的二进制编译器软件还是说也可以使用redhat的rpm?]
/ v3 z" S1 R& d  ?& C9 k. J---ANSWER:其他的发行版也有相应的包管理器,比如debian的包管理器叫dpkg,gentoo的好像可以merge等等。9 f9 Z* x& s  m- s+ d
下面,先再来一篇关于安装可执行程序的文章,说明一下,我用的机器装的是redhat9.0 strike版,所以我就在学校的ftp上下载了相应版本的is0光盘影响文件(3张盘),用虚拟光驱虚拟出三张盘来,便于后面找依赖的rpm格式的其它包的便利。基本上,我装的过程和他的一样,只是不它还多装了个binutils.* H$ m, C0 y) A* e% E" S  E. K: O
--------------------------begin
8 B# c, f, |) R! u- {9 R) |在quick linux中安装gcc的详细步骤  
) v% K" d& U: j1 \: b[ 作者:masenger    转贴自:来源不明    点击数:493    文章录入:admin ]
( l9 L2 P; {1 W, |; v在quick linux中安装gcc的详细步骤
0 \3 r( z4 f, m0 z% `5 B; g9 N7 h2 u                               --- masenger .2004-2005
) U9 c- g8 G5 T4 U- z  需要的东东有 :
4 k9 n9 y7 R: l8 b0 H    glibc-devel-2.3.2-11.9.i386.rpm
4 R! z4 p* G) v/ {4 K1 Y+ g1 e* N    glibc-kernheaders-2.4-8.10.i386.rpm
3 f$ n* ^9 B+ [& W6 g    gcc-3.2.2-5.i386.rpm
& w: Z# X& E! Z0 b7 h' [4 u; R% U8 T" e    cpp-3.2.2-5.i386.rpm8 F) Y; W) l+ e+ H5 c% R& e. Y+ P

: Q' p% N) _+ C0 T2 {9 p 我手中有三张光盘(red hat linux 9.0)
7 ?; _. v* y) `5 F# V 我要安装gcc编译器,在三张光盘中搜。 如果你没有这三张光盘,你可以到我的网站上去下载.) D+ ?) d. R. m# \/ P; I
也可以到internet上去搜索下载.
. @7 l7 R4 F2 \& ]/ E" O 4 D" }3 u. ~+ h0 w( m2 J- w
在第二张光盘上发现:gcc-3.2.2-5.i386.rpm
  C& }0 J% f; V, t- I9 z; q 现在将它从ftp传到我的linux中,拷贝到/root/install目录
7 i/ t+ h! Z  Q# K) i[root@masenger root]# cd install
' M& N2 f3 Z1 Q% b9 B3 l[root@masenger install]# ls* E5 A6 g# b( E% b4 e0 _$ l
gcc-3.2.2-5.i386.rpm  telnet-server-0.17-25.i386.rpm
" r/ j; D2 x0 B0 f安装gcc :* V6 W0 Q7 G, F9 Z% `0 ^  J
[root@masenger install]# rpm -ivh gcc-3.2.2-5.i386.rpm
" r" `$ M" \* S6 r6 m3 h  Ewarning: gcc-3.2.2-5.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
8 S2 u+ Z0 f% o& M6 ^; Q" perror: Failed dependencies:4 q5 d9 O# C" p) x' p) M
        cpp = 3.2.2-5 is needed by gcc-3.2.2-5+ m4 \/ @4 ]) P6 v* S1 E: o4 e
        glibc-devel >= 2.2.90-12 is needed by gcc-3.2.2-5
& ~  m7 o( ?' G/ a) r, h 由此看见需要glibc-devel至少2.2.90版本. 在光盘上搜索后找到它.
6 p2 W' _. C( z 把它从ftp传到我的linux中,拷贝到/root/install目录
' O+ {+ ]% m  Z- H0 D[root@masenger install]# ls: ^) j1 ]  m3 @8 A
gcc-3.2.2-5.i386.rpm  glibc-devel-2.3.2-11.9.i386.rpm  telnet-server-0.17-25.i386.rpm; J  [3 n" v% l; P
安装glibc-devel :) V1 K+ s& @( s' U' d/ K
[root@masenger install]# rpm -ivh glibc-devel-2.3.2-11.9.i386.rpm
5 A" ^# K5 O/ c8 Mwarning: glibc-devel-2.3.2-11.9.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e& z1 k- ~; _/ u' G
error: Failed dependencies:+ m/ `1 Z/ B( a" R: _
        kernel-headers is needed by glibc-devel-2.3.2-11.9
; ^5 t6 i' B2 x# W0 a) ^; v, B, e        kernel-headers >= 2.2.1 is needed by glibc-devel-2.3.2-11.9
2 E/ t6 k  O' i( o% S 由此看见需要kernel-headers至少2.2.1版本. 在光盘上搜索后找到它.
4 z& G* {* N0 }  N8 h 但是你发现没有叫kernel-headers .但是有一个glibc-kernheaders-2.4-8.10.i386.rpm
; n+ I. t& j. f0 n$ Y- t# N# i1 m6 j 把它从ftp传到我的linux中,拷贝到/root/install目录$ B0 R2 ~9 a+ P* o6 J
[root@masenger install]# ls
' p* l' _8 S; X4 c" o$ K% Fgcc-3.2.2-5.i386.rpm             glibc-kernheaders-2.4-8.10.i386.rpm
* T& }& z& H6 {glibc-devel-2.3.2-11.9.i386.rpm  telnet-server-0.17-25.i386.rpm
# {: u* w2 a1 g. m 安装kernel-headers :
4 \: F/ J# Y6 O( c. C. R6 t  @' \[root@masenger install]# rpm -ivh glibc-kernheaders-2.4-8.10.i386.rpm
, Q8 [. L* D6 r1 Fwarning: glibc-kernheaders-2.4-8.10.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
6 `; ~" ^7 ^2 y9 SPreparing...                ########################################### [100%]
. z8 H# X0 T5 Q  l8 Y   1:glibc-kernheaders      ########################################### [100%]- q0 m) i' `0 c* W
安装glibc-devel :
' P# T* ~$ W: s( c$ }7 U[root@masenger install]# rpm -ivh glibc-devel-2.3.2-11.9.i386.rpm* M, T  A4 n" Z
warning: glibc-devel-2.3.2-11.9.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
6 D2 o+ ]; Q9 G7 yPreparing...                ########################################### [100%]9 X6 i& {% N; N& U$ \
   1:glibc-devel            ########################################### [100%]
, }: T, [- J: [$ j3 O/ S) W1 t% {; b 安装gcc :
5 @$ |' B6 h' ?) t: B* t3 A: I; D[root@masenger install]# rpm -ivh gcc-3.2.2-5.i386.rpm9 |$ T" G9 J2 _6 [4 b. I
warning: gcc-3.2.2-5.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
- z) G7 _5 O3 s% w: `, n+ terror: Failed dependencies:; C* X4 {( s  V8 P
        cpp = 3.2.2-5 is needed by gcc-3.2.2-5
- d! _# V. `+ s; H* t+ Y 又提示你需要cpp至少3.2.2-5版本.在光盘上搜索后找到它.
4 k- b$ y6 K. P3 J: @+ ` 把它从ftp传到我的linux中,拷贝到/root/install目录" ~) p9 t  s: V: C0 |7 d
安装cpp:- Y  Q6 d0 H0 @0 r4 C: I1 `
[root@masenger install]# rpm -ivh cpp-3.2.2-5.i386.rpm
- b. O) U3 H8 D5 Owarning: cpp-3.2.2-5.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
6 z4 g5 a2 `1 [  s3 O! ]Preparing...                ########################################### [100%]5 T# \% v) C5 _4 R
   1:cpp                    ########################################### [100%]% e2 `  ^, u, a5 J$ j" K, x
' u: K8 m$ r+ I8 N# z
安装gcc :
1 D4 F. X, ?4 @# A. p[root@masenger install]# rpm -ivh gcc-3.2.2-5.i386.rpm
5 d: R* ]& `+ ~: I4 W  swarning: gcc-3.2.2-5.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
4 i. \) B' t( S- N* BPreparing...                ########################################### [100%]
* m8 U+ N" H( ?( w   1:gcc                    ########################################### [100%]
$ I4 |) P! ~- J8 p$ L! F到此为止,gcc就装好了9 t$ k! u6 j9 Q1 T+ `. [

0 E# M. k% J, R---------------end4 m8 H/ f/ \( b' g
" o7 i, S9 q' n4 z
没试过装源代码形式的就是不爽,所以按就一气呵成,再try一下装源代码格式的gcc编译器。我下载了3.4.1版本的gcc(gcc-3.4.1.tar.gz)。基本上按照下面这篇文章搞定的,虽然gnu网站上以及gcc解压后文件目录里面的INSTALL目录里面的介绍很全,但是仍觉得洋码不如咱中文看得舒服,哈哈, 。
7 Q/ i% s% p- i9 t-----------------begin
3 i- z% ^2 ?' v4 \7 p6 n2004年4月20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC 3.4.0比以前版本更好地支持了C++标准。本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程。
" e' L4 ]& _$ B, ]
3 k' Z! q- ?# X7 v+ k* u$ q0 f3 u/ \5 P2 K% Q# d8 A
  安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。$ C7 I- d0 d4 ]2 _

$ \) ?1 k( {: I6 a5 o: m9 k+ e# f/ E
  系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中我采用这个方案安装GCC 3.4.0,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。# d3 @0 @& R& O& d' V+ N6 x
% f4 Q3 L4 X! W
3 z2 ?: [  s# P8 p( W
  按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。7 |1 t' \  g5 [' w! ]- q3 [1 \

! B2 m7 k* R4 N- O- V2 z, {5 {2 ?
! J# g4 X' G$ ]  }3 O) E/ m! e  1. 下载
: e4 |# i2 L$ g' H
- O7 x" B( G0 b' f
4 V: t0 V/ w1 y  J; F* w; N  在GCC网站上()或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。
! d% o1 G" I& T" N
, }; H- c9 ]% ?9 `" G
9 [0 q4 ?0 P4 K  q* Q6 p3 d' l  2. 解压缩7 \' z7 M% ~# `% d# B

# h8 U: D- Y$ [8 T. r* h0 l% ^
% }" _/ H8 e, j' m4 K3 j  根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):
, q1 B" C4 k% r3 ~0 S- H1 H# }7 _4 k

+ l) C8 N  F6 [  % tar xzvf gcc-3.4.0.tar.gz   n" U1 a* ?2 u3 Q( `
  或者
9 O( x; v' T( L+ s0 [' A  % bzcat gcc-3.4.0.tar.bz2 | tar xvf -
% r/ y- B0 g; X+ Z) s. x9 U% j1 w: b

# R2 g5 v2 m/ O( m0 d; V* g  新生成的gcc-3.4.0这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。5 t* T: @# V- s: ]3 t7 h; y3 @. F7 R
# R# T; G6 M* w& G1 z

- x# N/ w; G/ y7 v  在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。5 i3 |3 }7 _( v2 n& A' y; R1 |

* T+ ]; S) A$ v* z( Z) f
/ n8 d& U$ A" h; P3. 建立目标目录
5 f1 V# e& ]4 `1 D, C9 \& j& c
- |& K# H: {3 ?! r. J: k& ?  目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。0 i1 j' |3 `7 |8 y" U, @" j
  x' b# @2 ^# i0 i
, K7 Y0 a' i& K0 t3 P% B6 Y/ K
  例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录${srcdir}是同级目录):( W! ?) l5 v2 T% I
" ?8 z9 y( X) [# k6 N
" ^3 J/ B; k7 _' Z% @% H1 [
  % mkdir gcc-build 0 E0 i$ y( ]* c7 b: }. \
  % cd gcc-build: B! [4 \0 C' Z0 E" U

3 m! ~! r1 F& d* g, {9 B' u4 h- f3 }  a( k) b
  以下的操作主要是在目标目录 ${objdir} 下进行。* I* ^1 p5 j7 Z* B2 l3 f
0 z' E2 V# w5 l# w) B8 J2 `9 P" l
0 s5 r6 |- ~/ D# a8 N
  4. 配置3 c1 D" K3 g( J  X

' w* J7 o( R  m4 o0 T  配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。
) @: c' W* E8 u4 ]& H  s1 K# y4 B- c! k! K0 }) J& n
3 U) p, X% y+ k7 \
  配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):
0 M2 l& T& P- U* l, e# A# ^+ J& J! L; p
, [6 {' L6 {' q) l
  % ${srcdir}/configure --prefix=${destdir} [其它选项]
5 d8 \9 j9 z" W% f0 ~/ y+ q
- ~, ^! t4 v- r, }0 t
: `' n' ~  W/ c' p& d  例如,如果想将GCC 3.4.0安装到/usr/local/gcc-3.4.0目录下,则${destdir}就表示这个路径。
# j- C" b+ a5 L" e
4 N$ b* a# O% B0 S: \$ ?+ a/ c7 B7 }* ~( A( q
  在我的机器上,我是这样配置的:$ n. z" j+ E$ H3 H8 G* m: j2 ~
" \  {9 L- d  `8 d

+ J5 S8 [5 A( ]  s! P4 F  % ../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+ q4 y  ^. R. S1 K, M  T# }' ^/ H
: o: S" g) n' b$ S; a

& s! k% D: Z3 M7 M8 y  将GCC安装在/usr/local/gcc-3.4.0目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。) |6 |  Z/ ]& y6 d

7 c0 ^, Z5 o# g% r% M
. A; V$ B) F; w  5. 编译* r' ^3 g' p4 w* `$ j. V; f

% `; P- Z; C# m5 n1 r7 V
0 j" X* C4 {: ?$ j" [2 m  % make+ g% d7 M4 m& q, L1 t" K

. Z$ u( |2 X+ h0 [. e/ J3 r" A% N0 ?9 X! d% x" A; h
  这是一个漫长的过程。在我的机器上(P4-1.6),这个过程用了50多分钟。
- ^+ w) E. O: n, s4 X" ]6 B3 B- C# N3 o: L
3 Q4 N7 B+ m2 k
  6. 安装
4 E+ |, L# l% k2 K2 M) \% F: Y. B6 Q( U4 H" c/ a# F# o

  l2 x0 h6 l, m) D& u& c' r  执行下面的命令将编译好的库文件等拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限):" j: B( {1 y" ~5 ]" G

( \$ G- |8 N! x5 Z" n1 ?3 I' i; H- n1 A7 ?, m7 @7 H+ j
  % make install; s/ R0 j& V8 \2 v7 \% a

- w- M+ t: M( z/ O; x' x
/ f! \2 K, E. ~8 r  至此,GCC 3.4.0安装过程就完成了。1 J: ?/ Z- M- [: [- ~
9 h. Q: p( u0 f: V+ w, ^
1 f$ n( j( K) `7 ]
  6. 其它设置* @3 ]! `: V7 B6 {

" S0 l" S& t, W+ B- K0 d1 L  C- k
: |2 _% g4 f7 h1 R  GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。& q. u1 e" O" N6 ^1 [, Y
. n6 ?% K- X3 ^) Q$ P* [% q1 p( e

0 u3 }* C+ Y" W0 d6.1 gcc、g++、gcj的设置
/ w/ J9 L9 e5 o, ~1 c) U% t5 F1 j
6 d2 n, {( J" X0 E, G( K6 M2 p4 j* H
7 [/ h& b3 m) u% g% L$ h2 a( ]* b/ Y6 H  要想使用GCC 3.4.0的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。
* T4 q. L+ {. d- r$ e% B8 Z1 B1 C. W' X+ Y7 k, H" H) r3 D, }* I& f
0 r: Q; p  |% `  R
  首先,查看原来的gcc所在的路径:( L# c7 N  ~6 v, M1 ?+ T
! B6 v) m4 m% c# s  Q; |+ J

" Z# A3 Z1 p3 g2 N5 a2 P  % which gcc
) F' N2 R3 n. Z( W1 X3 e; e: J; I4 B8 h) \9 Z- p. o1 F% ^+ G

6 U5 }$ ]2 S$ `% F/ a! y+ M  在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:5 I9 ?' k- T. s0 v3 j" L

: h1 _! _) Q0 f" {! ~6 J5 ?# s" _& w7 {* H8 P, w* s1 \
  % cd /usr/bin
/ X  p9 u  M: X6 A- N' s  % ln -s ${destdir}/bin/gcc gcc34 2 U6 a. t% q' {- l
  % ln -s ${destdir}/bin/g++ g++34
4 V$ k, f" Z* E. n  % ln -s ${destdir}/bin/gcj gcj34
* H3 k1 K# N2 l9 h5 D4 E- h( L6 g6 u) _

& ?5 S- n) Y0 \  这样,就可以分别使用gcc34、g++34、gcj34来调用GCC 3.4.0的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
2 c& d/ p7 c0 Q3 l+ s8 S  [! O/ P: l
$ q$ p: g; X/ {) N
  6.2 库路径的设置: w2 f7 Z/ `4 I( P  i2 g& v* a

$ }6 M  c4 u  F3 q3 t7 K" f5 O; H
" c. L) }7 P" F; ^: S  将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。: z- x+ I- Z1 C/ r0 H# A, F
/ E6 p9 }3 Q/ k/ |  A) J5 d
, z3 f% U- l$ _" L. Z
  例如,如果GCC 3.4.0安装在/usr/local/gcc-3.4.0目录下,在RH Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:
' L: P0 d4 s$ b' H  X0 Z  J% H+ j* ~+ a6 i" L: b7 f7 a% z% X. k
% U5 ?( S9 |1 L( c
  setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib: $LD_LIBRARY_PATH
+ \9 c' w0 M" q  q( @
0 Q2 U5 ]- m5 l
) J9 |4 w/ ], |, _: |9 a  7. 测试
2 [/ ]4 {5 u! x& X, }/ x
/ m( M) e/ ]. f4 d  用新的编译命令(gcc34、g++34等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。5 y: u) f, g" u6 m5 A* N8 K6 u
8 r. H. z- X- R

0 S* V3 G  W2 U' x, g; e/ K  8. 根据需要,可以删除或者保留${srcdir}和${objdir}目录。2 M* s  m4 @3 O( X2 o9 X7 V( w

" h% o0 F( t1 F2 o/ J, ]5 C. {( J8 I$ C2 A! a7 L  R
  后记:! g4 L9 Y6 ?# n  B( R1 }5 L! V: Q

0 |) b. y$ N) y; x  G' \+ |  }* ~1 \% K' \
  前两天刚安装好了GCC 3.4.0,把安装规划、安装过程、一些注意事项记录下来就形成了这篇文章。希望对大家、特别是还没有安装过GCC的朋友在安装GCC的时候有所帮助
7 ]$ S+ t% }+ B: p! G* K) _( b3 j) ?# _( p+ Z; K0 g, A9 ^

该用户从未签到

2#
发表于 2021-3-9 17:43 | 只看该作者
redhat linux上安装 gcc编译器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 17:34 , Processed in 0.171875 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表