为特定用户账户升级 gcc

为特定用户账户升级 gcc

我在运行 CentOS6/RHEL6 的计算集群上工作,与大约 100 名其他用户共享,由一名 IT 管理员监督。

最近我开始用 C++ 编写代码,部分代码依赖于 C++11。根据此网页gcc, 4.8.1及以上版本 支持C++11 。

不幸的是,计算集群有4.4.7版本。

不久前,出于其他原因,我尝试将gcc版本 4.8.4 安装到集群上我的主目录下的一个位置。安装失败,此错误信息。通过谷歌搜索,我相信我应该更新glibc,所以我尝试将较新版本安装到我的主目录中。彻底失败

我的 IT 管理员总结道:“修改集群上的版本可能行不通gcc。”在我问更多问题惹恼她之前(因为此时我需要更新版本一些C 编译器),我正在众包这些:

(1)将gcc4.8.1+ 版本安装到我的用户帐户是否可行?(上次我尝试这样做后,有些人说这根本就是一个糟糕的想法。)

(2)如果(1)的答案是肯定的,那么这次我应该采取什么预防措施来确保安装成功?是否有glibc必要安装到我的帐户?这可行吗?

(3)如果对(1)的回答是否定的,那么我的 IT 管理员是否可以安装gcc系统范围的较新版本,而不会破坏依赖于现有版本的代码?

(4) 如果以上方法都不适用gcc,那么换一个 C 编译器之后情况会改变吗?

总而言之,如果可能的话,我正在寻找具有相关知识的人gcc(或另一个 C 编译器)来解释一个人(没有权限)如何升级它。sudo

答案1

我能够在 Centos 6.7 上的主目录中从源代码构建 GCC 4.8.5。我正在使用发行版 glibc;我不必构建 glibc。

警告:我在安装了发行版 GCC 4.4.x 源包的构建依赖项以及libmpc-devel来自 epel 存储库的包的系统上执行此操作。如果缺少这些,您可能必须先将它们从源代码构建到主目录中,然后以某种方式更改 gcc 构建过程以从那里使用它们(如果可能的话)。

构建 GCC:

  1. 获取 GCC 源代码

    curl -LO https://mirrors.kernel.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
    
  2. 提炼

    tar xf gcc-4.8.5.tar.bz2
    
  3. 在 GCC 源目录之外创建一个构建目录并进入该目录

     mkdir build && cd build
    
  4. 配置。我做了:

     ../gcc-4.8.4/configure --build=x86_64-linux-gnu --prefix=/home/rakslice/gcc_4_8 \
                            --enable-checking=release --enable-languages=c,c++,fortran \
                            --disable-multilib --program-suffix=-4.8
    
  5. 构建。我有 4 个核心,因此我执行以下操作:

     make -j 5
    
  6. 安装

     make install
    
  7. 现在我可以编译并运行一些测试代码。

     /home/rakslice/gcc_4_8/bin/g++-4.8     hello.cpp   -o hello
     ./hello
     Hello, World!
    

答案2

关于您的具体问题:

(1)是的,这是可行的,但是可能并不有趣。

(2) 不,通常你可以使用系统 glibc。从 gcc 你需要等libstdc++libgcc

我的方法是遵循官方说明 很接近并且只有当它与您的平台非常匹配时才采用非官方指令。

我实际上不会考虑 4.8,而是直接使用当前发布系列之一(5.2 或 4.9)。

注意:我自己没有做过非 root gcc 安装,但是我工作的系统将不同版本的 gcc 作为 gnu 模块进行维护。

相关内容