• GCC是Linux平台下最常用的编译程序,它是Linux平台编译器的事实标准。同时,在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器。本文将告诉读者如何下载并按照GCC。

下载

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

解压缩

根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):
% 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阅读。

建立目标目录

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

例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录${srcdir}是同级目录):
% mkdir gcc-build 
% cd gcc-build

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

配置

配置的目的是决定将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提供的帮助说明。

编译
% make

这是一个漫长的过程。在我的机器上(P4-1.6),这个过程用了50多分钟。

安装

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

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

其它设置

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

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++等命令。

库路径的设置

将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。

例如,如果GCC 3.4.0安装在/usr/local/gcc-3.4.0目录下,在RH Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:

$LD_LIBRARY_PATH

测试

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

根据需要,可以删除或者保留${srcdir}和${objdir}目录。

转载于:https://www.cnblogs.com/xiatian1071/archive/2010/05/28/1746400.html

详解GCC的下载和安装相关推荐

  1. 超详解Tomcat的下载、安装、启动等问题

    1.下载:官网进行下载阿帕奇雄猫® - 欢迎! (apache.org) (提示:后面有下载好的链接,大家可以自提,想学习的可以继续看,不想的直接跳转到第二步即可) 在右边下载的地方选择第一个,点击进 ...

  2. 详解LAMP源码编译安装

    实战:LAMP源码编译安装 家住海边喜欢浪:zhang789.blog.51cto.com 目录 详解LAMP源码编译安装 LAMP简介 一.准备工作 二.编译安装 Apache 三.编译安装 MyS ...

  3. 【图文详解】JDK1.8的安装与环境变量配置(win10)

    本例以win10(64位)下JDK1.8的安装为例 JDK1.8的安装与环境变量配置 一.JDK1.8安装过程详解 二.JDK1.8环境变量配置详解 三.检查JDK安装与配置是否成功 一.JDK1.8 ...

  4. Burp Suite安装配置详解(附Java 环境安装)

    Burp Suite安装配置详解 1.Java 安装与环境配置详解 1.0 下载Java SDK 1.8 最新版 2.0 配置Java 环境变量 2.Burp Suite 安装详解 2.0 下载Bur ...

  5. 《MySQL安装流程详解》及《MySQL安装一直失败,重新安装显示已安装》

    <MySQL安装流程详解>及<MySQL安装一直失败,重新安装显示已安装> 本文由博主经过查阅网上资料整理总结后编写,如存在错误或不恰当之处请留言以便更正,内容仅供大家参考学习 ...

  6. Element Plus 实例详解(一)___安装设置

    Element Plus 实例详解(一) ___安装设置 本篇目录: 一.前言 二.安装方法 1.环境支持 2.Element Plus安装使用方式 (1).使用包管理器 (2).浏览器直接引入 3. ...

  7. python中pandas安装视频教程_详解Python中pandas的安装操作说明(傻瓜版)

    很多人来问我pandas的安装(python数据分析里面的必修课) 步骤如下: 安装python的时候,把路径加到系统里,这样,随时可以用pip 路径添加方法: 查找路径: 路径1: 2.例如: 即: ...

  8. 《TCP/IP详解》中文版下载地址

    <TCP/IP详解>中文版下载地址 TCP/IP详解 卷1协议http://www.chinaccna.com/Soft/ShowSoft.asp?SoftID=822 TCP/IP详解 ...

  9. MySQL 数据库安装、完全卸载与配置详解和NavicatforMySQL下载及使用以及PyMySQL数据库的搭建

    本文内容包括三大块: MySQL 数据库安装 MySQL 数据库完全卸载 MySQL 数据库配置详解 NavicatforMySQL下载及使用 PyMySQL数据库的搭建 大家可以按需提取内容,当然觉 ...

最新文章

  1. 大牛是怎么思考设计SQL优化方案的?
  2. JS模块化工具requirejs教程02
  3. Python 数据分析三剑客之 Pandas(六):GroupBy 数据分裂、应用与合并
  4. 3蛋白wb_WB常见问题原因分析及解决办法
  5. 庆祝自开博来首篇浏览数过万的随笔诞生 - [原创]从程序员角度分析安徽电信HTTP劫持的无耻行径......
  6. __stdcall函数调用约定
  7. nvsip能用别的软件吗_为什么很多企业转向了 Golang? Java, Python, C#没落了吗?
  8. 华强北出租5G手机,半小时3块钱,双11“秒杀利器”,十秒九中!
  9. 适合办公的笔记本电脑_最适合你的十款笔记本电脑
  10. LLVM项目的目录布局介绍
  11. 连续分配存储管理,覆盖交换和存储碎片
  12. 以太坊教程- Web3.js 开发基础
  13. 物联网全栈开发实战系列文章汇总(共865篇,持续更新-2023.05.02)
  14. js中Array对象。concat,concat,pop,push,reserve,shift,slice,splice,toString,toLocaleString,unshift
  15. 看看这个自动生成诗的网站http://www.dopoem.com
  16. 记录大疆研发管理岗初面
  17. python爬虫利用线程池下载视频
  18. antvf2动态数据_浅谈ES6基础——Promise
  19. 根据IP获取城市代码
  20. 内心的强大,永远胜过外表的浮华

热门文章

  1. Kitti中GPS/IMU数据格式
  2. 星宇专卖店POS收银软件管理系统 v2.49 官方版
  3. wlan和wfi的区别
  4. 不愧是 GitHub 上标星 100K 的 Java 手册,全程无废话,只讲重点
  5. 推荐几种靠谱的离职原因回答策略
  6. C语言题目——通讯录(静态存储+动态存储)
  7. Delphi获取android 文件路径,发一个Delphi 从 .lnk 文件获取真正路径的程序
  8. Linux基础命令-sed流编辑器
  9. 互联网人才什么特质最重要——“跨界”
  10. 步进电机的特点、选型方法以及型号参数说明