为你详解Linux安装GCC方法

2009-12-11 14:05 佚名 博客园 字号:T | T

现在很多程序员都应用GCC,怎样才能更好的应用GCC。本文以在Redhat Linux安装GCC4.1.2为例(因在项目开发过程中要求使用,没有用最新的GCC版本),介绍Linux安装GCC过程

AD:51CTO学院:IT精品课程在线看!

现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。本文以在Redhat Linux安装GCC4.1.2为例(因在项目开发过程中要求使用,没有用最新的GCC版本),介绍Linux安装GCC过程。

安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 4.1.2。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。

系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中采用这个方案安装GCC 4.1.2,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。

按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。

1. 下载

在GCC网站上(http://gcc.gnu.org)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 4.2.1。可供下载的文件一般有两种形式:gcc-4.1.2.tar.gz和gcc-4.1.2.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。

2. 解压缩

拷贝gcc-4.1.2.tar.bz2(我下载的压缩文件)到/usr/local/src(根据自己喜好选择)下,根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):

% tar zxvf gcc-4.1.2.tar.gz
或者
% bzcat gcc-4.1.2.tar.bz2 | tar xvf -

新生成的gcc-4.1.2这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。

在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。

3. 建立目标目录

目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。

例如,可以这样建立一个叫 /usr/local/gcc-4.1.2的目标目录:

% mkdir /usr/local/gcc-4.1.2
% cd gcc-4.1.2

以下的操作主要是在目标目录 ${objdir} 下进行。

4. 配置

配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。

配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):

% ${srcdir}/configure --prefix=${destdir} [其它选项]

例如,如果想将GCC 4.1.2安装到/usr/local/gcc-4.1.2目录下,则${destdir}就表示这个路径。

在我的机器上,我是这样配置的:

% ../gcc-4.1.2/configure --prefix=/usr/local/gcc-4.1.2 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java

将GCC安装在/usr/local/gcc-4.1.2目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。

5. 编译

% make

6. 安装

执行下面的命令将编译好的库文件等拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限):

% make install

至此,GCC 4.1.2安装过程就完成了。

7. 其它设置

GCC 4.1.2的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。

7.1 gcc、g++、gcj的设置

要想使用GCC 4.1.2的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。

首先,查看原来的gcc所在的路径:

% which gcc

在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 4.1.2中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:

% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc412
% ln -s ${destdir}/bin/g++ g++412
% ln -s ${destdir}/bin/gcj gcj412

这样,就可以分别使用gcc412、g++412、gcj412来调用GCC 4.1.2的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。

7.2 库路径的设置

将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,例如,如果GCC 4.1.2安装在/usr/local/gcc-4.1.2目录下,在RH Linux下可以直接在命令行上执行
% export LD_LIBRARY_PATH=/usr/local/gcc-4.1.2/lib

最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了,在文件$HOME/.bash_profile中添加下面两句:
LD_LIBRARY_PATH=/usr/local/gcc-4.1.2/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

重启系统设置生效,或者执行命令
% source $HOME/.bash_profile

8. 测试

用新的编译命令(gcc412、g++412等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。

完成了Linux安装GCC,之后你就能轻松地编辑了。

详解Linux安装GCC的更多相关文章

  1. 详解Linux安装GCC方法

    转载自:http://blog.csdn.net/bulljordan23/article/details/7723495/ 下载: http://ftp.gnu.org/gnu/gcc/gcc-4. ...

  2. 为你详解Linux安装GCC方法

    下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/查 ...

  3. 详解Linux 安装 JDK、Tomcat 和 MySQL(图文并茂)

    https://www.jb51.net/article/120984.htm

  4. 详解Linux下swig 3.0.12的手动安装过程

    详解Linux下swig 3.0.12的手动安装过程 首先 从http://www.linuxfromscratch.org/blfs/view/cvs/general/swig.html上下载swi ...

  5. linux dmesg命令参数及用法详解(linux显示开机信息命令)

    linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...

  6. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  7. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  8. 详解linux运维工程师入门级必备技能

    详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...

  9. Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)

    1 前景回顾 1.1 Linux的调度器组成 2个调度器 可以用两种方法来激活调度 一种是直接的, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性的机制, 以固定的频率运行, 不时的检测 ...

随机推荐

  1. Progressive web app理念及发展前景

    前一段时间微信推出微信小程序进行公测,着实火了一把,博得了大众的眼球,不明真相的吃瓜观众们纷纷围观,所谓的“微信小程序”,通俗的讲就是一种不需要下载安装即可使用的应用程序,脱离于app商店依托于浏览器 ...

  2. [CodeVS4438]YJQ Runs Upstairs

    [CodeVS4438]YJQ Runs Upstairs 题目大意: 一个\(n(n\le50)\)个点\(m(m\le300)\)条边的DAG,保证从\(1\)到\(n\)的所有路径经过边数均小于 ...

  3. Springzz中使用监听器,用于容器一启动就加载准备数据(application范围内的数据,用于减轻服务器压力,不用每次都去查数据)

    java代码: public class InitListener implements ServletContextListener { public void contextInitialized ...

  4. windows下安装SVN ,Git/SVN 常用命令笔记

    Windows下: 1 安装svn,git,python 2 下载libUV源码,https://github.com/joyent/libuv,可以用git,也可以直接下 载源码包,当前是joyen ...

  5. Codeforces 932G Palindrome Partition 回文树+DP

    题意:给定一个串,把串分为偶数段 假设分为$s_1,s_2,s_3....s_k$ 求满足$ s_1=s_k,s_2=s_{ k-1 }... $的方案数模$10^9+7$ $|S|\leq 10^6 ...

  6. SVN解决本地版本控制与服务器版本冲突问题

    最近经常遇到一个冲突问题,svn服务器已经没有这个文件,本地也没有这个文件,但是你提交代码的时候svn会显示冲突,也就是说本地svn仍然在管理着这个文件. 解决办法:在相应的目录下新建一个名字一样的文 ...

  7. tomcat能正常启动但是访问项目的welcome界面出现404

    http://www.linuxidc.com/Linux/2017-03/141986.htm http://blog.csdn.net/shasiqq/article/details/513026 ...

  8. .Net性能的方方面面(必看官方经典)

    更多性能提高相关文章,必看 https://msdn.microsoft.com/en-us/library/hh917314.aspx Chapter 1 - Fundamentals of Eng ...

  9. 如何将 Java 项目转换成 Maven 项目

    本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确 ...

  10. Eclipse 4.5.0 离线安装 Veloeclipse 插件

    下载 Veloeclipse 在 Eclipse eclipse-jee-mars-R-win32-x86_64 版本 4.5.0,Build id 为 20150621-1200,离线安装 Velo ...