Redhat Enterprice Linux 6.2上安装g++编译器

遇到的问题


由于工作原因需要学习Storm,因此今天一整天都在自己的电脑上折腾,这里记一个自己遇到的问题:RHEL6.2上g++编译器的安装。

我是在三台虚拟机上折腾Storm的,三台虚拟机安装的都是RedHat Enterprice Linux6.2操作系统,在我安装zeroMQ的时候,在configure步骤中遇到了问题,说是没有c++编译器,错误为:

configure: error: Unable to find a working C++ compiler

具体如下图所示:

Redhat Enterprice Linux 6.2上安装g++编译器_第1张图片

网上说是c++编译器没有安装,需要执行如下命令进行安装:

yum install gcc-c++

然后我就用yum安装,但一直装不上,yum输出如下:


后来我发几乎安装所有的软件都是“Nothing to do”,这很可能是源的问题,但我对Redhat并不够熟悉,纠结了很长一段时间,上网查也没找到好用的解决方案,在安装gcc-c++时报错:

Redhat Enterprice Linux 6.2上安装g++编译器_第2张图片

后来我看到yum源配置文件中有这样一行内容:

[plain]  view plain copy
  1. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  

这好像是定位到Linux文件系统中某个文件的,突然意识到是否 baseurl 这行也应该是file开头呢?于是我将 baseurl=ftp:///tmt 这一行内容中的 ftp 改为 file ,居然成功了。我不知道是作者写错还是自己哪里做错了,反正是用ftp总是错误,换成file就好用了,虽然问题解决了,但我并不知道是何原因。


解决方法

下面将问题解决的步骤记一下。

挂载ISO镜像


首先是将rhel6.2的安装镜像挂载到Linux上,我用的是WMware虚拟机,所以使用VMWare Tools很方便的将Windows宿主机的ISO镜像共享给Linux,共享文件夹会出现在Linux系统的/mnt/hgfs路径下;然后使用root用户在根路径下创建目录tmt,使用如下命令将ISO镜像挂载到该路径:

[plain]  view plain copy
  1. mount -o loop /mnt/hgfs/system/rhel-server-6.2-x86_64-dvd.iso /tmt  

当然也可以将ISO拷贝到Linux系统中再挂载,由于我的虚拟机为Linux分配空间不大,因此没有拷贝。


配置本地yum源


接下要做的是配置本地yum源指向ISO镜像挂载的路径,使用root权限编译配置文件 /etc/yum.repos.d/rhel-source.repo(可以预先备份一下,安装完需要的包之后再改回去),配置内容如下:

[plain]  view plain copy
  1. [rhel-source]  
  2. name=yum local  
  3. baseurl=file:///tmt  
  4. gpgcheck=0  
  5. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  
  6.   
  7. [rhel-source-beta]  
  8. name=yum local  
  9. baseurl=file:///tmt  
  10. enabled=1  
  11. gpgcheck=0  
  12. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  

其实只改动baseurl指向ISO挂载路径即可,这里我将上面提到博客中的 ftp 换成了 file,其它的与博客中内容一致,保存退出。


安装


执行命令:

yum clean all

然后执行命令

yum list gcc-c++

查看是否有需要的软件。

Redhat Enterprice Linux 6.2上安装g++编译器_第3张图片

安装c++编译器命令:

yum install gcc-c++

安装成功,提示如下所示:

Redhat Enterprice Linux 6.2上安装g++编译器_第4张图片

然后再去zeroMQ目录下进行configure,可以成功编译。

你可能感兴趣的:(C++,linux,yum,RHEL)