linux下安装gcc详解
1、了解一下gcc
目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。我自己linux上是4.1.2版本,是不支持openMP的,而自己又要用到openMP,所以自己在原来的基础上安装了一个4.2以上版本的。
在安装之前,系统必须有cc或者gcc的编译器,如果没有,就不能安装更高版本的gcc了,如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。
本文介绍的是以源代码安装gcc的过程,我安装的是在一个单独的目录下,以后想卸载的话,直接删除该目录就行,本文介绍的是安装4.3.4版本的详细过程。只需要按照以下步骤来一步一步安装就行。
2、需要下载的安装包
2.1 下载gcc
下载网址是http://ftp.gnu.org/gnu/gcc/,可以根据自己的需要下载哪个版本,我选择的是4.3.4版本。里面有gcc-4.3.4.tar.bz2,gcc-4.3.4.tar.gz,任意选一个就行,它们是完全一个样的。我选择的是gcc-4.3.4.tar.gz。还可以查看Changes: http://gcc.gnu.org/gcc-4.5/changes.htm,相比上一个版本有哪些改变,自己随便看就行
2.2 下载3个依赖包
一个是mpc,一个是gmp,一个是mpfr,下载地址依次为:ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz,ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2 ,http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz。安装的顺序依次为:GMP,mpfr, mpc,最后安装gcc。我开始就直接安装gcc,在配置过程出现以下信息:
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.
提示安装gcc之前,必须安装GMP 4.2以上版本,MPFR2.3.1以上版本, MPC 0.8.0以上版本。
3、安装步骤
3.1 安装GMP-5.0.1.
我这里选择的是GMP5.0.1版本,解压gmp-5.0.1后,得到源代码目录,创建一个临时编译目录temp。
$ tar -jxvf gmp-5.0.1.tar.bz2
$ cd gmp-5.0.1
$ mkdir temp
$ cd temp
开始配置安装目录,进入temp目录后,输入以下命令:
$ ../configure --prefix=/usr/local/gmp-5.0.1
$ make
$ make install
这样gmp就安装完成了。安装mpfr和mpc过程也差不多,只是安装的时候得加入依赖项
3.2 安装mpfr
我这里选择的是3.1.2版本的mpfr。解压,建立临时编译目录temp,进入temp目录
$ tar -zxvf mpfr-3.1.2.tar.gz
$ cd mpfr-3.1.2
$ mkdir temp
$ cd temp
$ ../configure --prefix=/usr/local/mpfr-3.1.0 --with-gmp=/usr/local/gmp-5.0.1
$ make
$ make install
其中--with=/usr/local/gmp-5.0.1就是依赖项, /usr/local/gmp-5.0.1是gmp的安装目录
3.3 安装mpc
我选择的是1.0.2版本mpc.解压,建立临时编译目录temp,进入temp目录.
$ tar -zxvf mpc-1.0.2.tar.gz
$ cd mpc-1.0.2
$ mkdir temp
$ cd temp
$ ../configure --prefix=/usr/local/mpc-1.0.2 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.0
$ make
$ make install
记得后面两项的依赖项,也就是你的gmp和mpfr的安装目录
3.4 安装gcc
前面安装的三个,都是为安装gcc做准备的。解压gcc的安装包
$ tar zxvf gcc-4.3.4.tar.gz 或者 $ tar jxvf gcc-4.5.1.tar.bz2
得到的目录gcc-4.3.4就是源目录,用${srcdir}表示。在gcc-4.3.4里的INSTALL目录里就有安装的详细过程,那全都是英文的,里面的源目录也是用${srcdir}表示。我是解压在/usr/local/src/gcc-4.3.4目录里。
建立目标目录
$ mkdir /usr/local/gcc-4.3
$ cd gcc-4.3
这是目标目录,也就是编译的目录,然后以下所有的操作都在该目录下进行.用${objdir}
建立安装目录
$ mkdir /usr/local/gcc-4.3.4
这是你gcc安装的地方。用${destdir}表示。开始进行配置
$ ${srcdir}/configure --prefix=${destdir} [其它选项]
安装的时候记得把真实目录替换掉${srcdir}和${destdir}。我的是这么写的
$ /usr/local/src/gcc-4.3.4/configure --prefix=/usr/local/gcc-4.3.4 --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++,java --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.0 --with-mpc=/usr/local/mpc-1.0.2
记得加上后面三个依赖项,否则会出刚开始出现的错误的。然后安装
$ make
$ make install
安装的时候等挺长时间,差不多两个小时。
3.5 gcc、g++、gcj设置
要想使用GCC 4.3.4的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。
而原来gcc的路径是在usr/bin下。我们可以把gcc 4.3.4中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:
$ cd /usr/bin
$ ln -s /usr/local/gcc-4.3.4/bin/gcc gcc434
$ ln -s /usr/local/gcc-4.3.4/bin/g++ g++434
$ ln -s /usr/local/gcc-4.3.4/bin/gcj gcj434
这样,就可以分别使用gcc434、g++434、gcj434来调用GCC 4.1.2的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
3.6 库路径的设置
将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,例如,如果GCC 4.3.4安装在/usr/local/gcc-4.3.4目录下,在RH Linux下可以直接在命令行上执行
$ export LD_LIBRARY_PATH=/usr/local/gcc-4.3.4/lib
最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了,在文件$HOME/.bash_profile中添加下面两句:
LD_LIBRARY_PATH=:/usr/local/mpc-1.0.2/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-3.1.2/lib:/usr/local/gcc-4.3.4/lib
export LD_LIBRARY_PATH
或者在/etc/bash_profile 下添加。
重启系统设置生效,或者执行命令
$ source $HOME/.bash_profile
或者:
$ source /etc/bash_profile
用新的编译命令(gcc412、g++412等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。
完成了Linux安装GCC,之后你就能轻松地编辑了。
linux下安装gcc详解的更多相关文章
- linux下安装apache详解
下载httpd-2.2.6.tar.bz2 把httpd-2.2.6.tar.bz2放到/soft 下[root@localhost ~]#cd /soft[root@localhost soft] ...
- TVD$XTAT在linux下安装使用详解
扩展跟踪文件分析工具 (TVD$XTAT)是个命令行工具.和TKPROF一样,主要目的是把原始跟踪文件作为输入内容生成一个格式化的文件作为输出内容.输出文件可以是HTML或是文本文件.界面非常友好,推 ...
- linux下IPTABLES配置详解 (防火墙命令)
linux下IPTABLES配置详解 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT ...
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- Linux下rar命令详解
Linux下rar命令详解 用法: rar <命令> -<选项1> ….-<选项N> < 操作文档> <文件…> <@文件列表…> ...
- linux下tar命令详解
linux下tar命令详解 tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.ta ...
- Linux下chkconfig命令详解(转)
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
- Linux知识积累(4) Linux下chkconfig命令详解
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
- Linux下top命令详解
Linux下top命令详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷 ...
随机推荐
- 2-ubuntu下访问window的磁盘
双系统Ubuntu无法进入Windows磁盘的解决方法 有些用户在电脑上安装了Ubuntu和Win10的双系统,正常情况下Ubuntu是可以正常访问Windows磁盘的.但是有些用户就是无法再Ubun ...
- 多因子降维法(MDR,Multifactor Dimensionality Reduction )
多因子降维法(MDR,multifactor dimensionality reduction) 多因子降维法(MDR,Multifactor Dimensionality Reduction ) ...
- [SoapUI]怎样获取隐藏元素的文本内容Get text of hidden element
隐藏元素无法通过gettext()获取其文本内容,须用javascript来获取 String actualDataPointName = (String) ((JavascriptExecutor) ...
- myeclipse 快捷键,从步骤开始的大括号定位到匹配方法结束的大括号
myeclipse 快捷键,从方法开始的大括号定位到匹配方法结束的大括号转至匹配的括号 Ctrl+Shift+P ctr+shift+r 文件名搜索文件 ctr+h 搜索文件里 ...
- Docker添加官方加速源(必须)
在国内使用Docker必须用加速镜像不然的话无论是pull 官方的还是私有的镜像都会WAIT TIME EXCEED 下面给出macos的添加方式,非常简单 macOS 对于使用 macOS 的用户, ...
- SpringCloud之自动化配置-config
编程开发的时候有没有觉得很多配置文件需要维护,比如,修改了数据库连接,所有用到该数据库的服务配置都得替换,是不是超级的麻烦呢 下面,给大家介绍一下Spring提供的配置自动化组件-spring clo ...
- CoreText
[CoreText] Core Text is designed for development of higher-level text-handling frameworks. General ...
- WAMP不能启动, 一直处于红色图标或者橙色图标的解决办法
WAMP不能启动, 一直处于红色图标(正常启动为绿色吧) 考虑是端口的问题,我找到wamp文件夹中的wamp\bin\apache\apache2.2.22\conf路径下的httpd.conf文件, ...
- mongoTemplate更新一个Document里面的数组的一个记录。
假如有一个Document如下: { "_id" : "69bca85a-5a61-4b04-81fb-ff6a71c3802a", "_class& ...
- ZSTU4266 回文 2017-03-22 14:25 55人阅读 评论(0) 收藏
4266: 回文 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1636 Solved: 504 Description 小王想知道一个字符串是否为 ...