如何在CentOS 6上安装GCC

・9 分钟阅读

在本文撰写之际Centos6正式发布了GCC v4.4.7,但是,最近发布了GCC v5.1。在此之前,v4.9.2可用。

如果需要一个更新版本的GCC,官方建议是你应该考虑一个不同的UNIX版本,以支持最新版本。

幸运的是,你可以在CentOS上安装更新版本的GCC,而保留旧版本安装。你会遇到一些复杂的情况 例如,如果要安装第三方内核模块,则必须使用用于构建内核的相同版本的GCC来编译它们。

本文介绍了如何安装Centos6官方支持的GCC版本,以及如何安装较新的版本,

安装正式支持的(较旧)版本的GCC

即使你想从源代码安装更新版本的GCC,GCC本身也是用C语言编写的。因此,首先必须安装一个旧的C++编译器。

  1. 通过在控制面板中单击"查看控制台或通过SSH如果已设置)登录到你的VPS。

    (a)作为root登录。

    (b)创建自己的用户帐户,并为它提供密码。

    
    adduser <username>
    passwd <username>
    
    

    (c)允许你的用户帐户通过sudo命令执行有root权限的命令。

    
    visudo
     After the line"root ALL=(ALL) ALL"
     Add the line"<username> ALL=(ALL) ALL"
     --- If you aren't familiar with vi, go to the line"root ALL=(ALL) ALL".
     --- Hit"o" to create a new line after that line and enter insert mode.
     --- Type"<username> ALL=(ALL) ALL".
     --- Hit ESC.
     --- Type"ZZ" to save.
    
    

    (d)以root身份注销,并登录到用户帐户。

  2. 安装CentOS 6GCC软件包,由于依赖关系,这会询问你是否要安装大约11个软件包。

    
    sudo yum install gcc gcc-c++
    
    
  3. 检查已安装的版本,并显示其位置。

    
    gcc --version
     May say: gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
    g++ --version
     May say: g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
    which gcc
     /usr/bin/gcc
    which g++
     /usr/bin/g++
    
    

从源安装一个新版本

如果你只想要CentOS官方支持的GCC版本,那么你已经完成了所有设置。如果你需要最新版本的GCC,请继续。

  1. 重要首先,完成上述步骤来安装旧的二进制版本GCC,

  2. 安装额外需要的软件包,这会询问你是否要安装大约41个软件包。

    
    sudo yum install svn texinfo-tex flex zip libgcc.i686 glibc-devel.i686
    
    
  3. 决定要安装哪个版本的GCC 。 此命令将显示每个可用版本的"tags "。

    
    svn ls svn://gcc.gnu.org/svn/gcc/tags | grep gcc | grep release
     gcc-2_95-release/
     ...
     gcc-4_9_2_release/
     gcc-5_1_0_release/
    
    
  4. 获取你想要的GCC版本的来源,这将运行几分钟。本文的其余部分是为gcc-5_1_0_release/编写的,会下载源代码,~/sourceInstallations/gcc_5_1_0_release/

    
    mkdir ~/sourceInstallations
    cd ~/sourceInstallations
    svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_5_1_0_release/
    
    
  5. 获得其他先决条件的来源。使用v5.1.0,这将下载源代码并将它添加到针对MPFR v2.4.2、GMP 4.3.2和MPC 0.8.1的GCC构建中。

    
    cd gcc_5_1_0_release/
    ./contrib/download_prerequisites
     --- Important, run this as shown, from the gcc_5_1_0_release directory.
     --- Do not cd to the contrib directory
    
    
  6. 如果VPS只有768MB内存,那么在下一步中内存会用尽,如果你有1GB的内存,你可能没问题,但是,这样做不会有什么坏处。如果你有2GB或更多内存,则可以跳过此步骤。此步骤使用交换文件添加500MB的虚拟内存。

    
    SWAP=/tmp/swap
    dd if=/dev/zero of=$SWAP bs=1M count=500
    mkswap $SWAP
    sudo swapon $SWAP
    
    
  7. 建立GCC。这将持续数小时。如果正确完成,你将看到的最后一行将显示"success",只要构建完成,并且显示"success ",看到一些看起来像错误的消息快速滚动是很正常的。在源目录以外的目录中构建总是一个好主意。GCC文档声明不应使用作为源目录的子目录的构建目录。

    
    cd ..
    mkdir gcc_5_1_0_release_build/
    cd gcc_5_1_0_release_build/
    ../gcc_5_1_0_release/configure && make && sudo make install && echo"success"
    --- If your VPS has multiple cores, you can speed up the build by changing the middle part
    --- of this line from"&& make &&" to"&& make -j <number of cores> &&".
    --- You can see the number of cores your VPS has by running"nproc"
    
    
  8. 如果在步骤6中设置了交换文件请将它删除,在重新启动之后,不需要进行更多的配置,它将不会被用作交换文件,而且只需要硬盘空间。

    
    sudo swapoff $SWAP
    rm /tmp/swap
    
    
  9. 检查已安装的版本,并查看其位置。

    
    hash -r
     (Makes your login"forget" about the previously seen locations of gcc and g++)
    gcc --version
     May say: gcc (GCC) 5.1.0
    g++ --version
     May say: g++ (GCC) 5.1.0
    which gcc
     /usr/local/bin/gcc
    which g++
     /usr/local/bin/g++
    
    
  10. 将新库添加到ld (GNU链接器)。

    
    echo"/usr/local/lib64" > usrLocalLib64.conf
    sudo mv usrLocalLib64.conf /etc/ld.so.conf.d/
    sudo ldconfig
     --- This may say a file or two"is not an ELF file - it has the wrong magic bytes at the start."
     --- You may ignore this message. It is silent about the work it successfully completed.
    
    
  11. 选择Hello World程序。

    
    mkdir ~/code
    cd ~/code
    Create a file main.cpp that says:
     #include <iostream>
     using namespace std;
     int main() {
     cout <<"Hello world!" << endl;
     return 0;
     }
    --- One way to create this file is to run"vi main.cpp", hitting"i" to enter insert mode,
    --- typing the above file, hitting ESC, and hitting"ZZ" to save.
    g++ main.cpp -o main
    ./main
     Hello World!
    
    
  12. 可选择回收硬盘空间,你的~/sourceInstallations文件夹会占用8.0 GB ,保存文件夹可能是明智的,因为在某些时候可能需要使用可选配置选项,此外,生成过程使日志能够在发生错误时进行检查和工作,但是在运行sudo make install 之前你安装的GCC并不依赖于此目录中的任何内容,而且空间可能会非常宝贵,因此你可以执行此步骤,并且回收8.0GB左右的空间,

    
    cd ~/
    rm -rf sourceInstallations
    --- Again, if you can spare the space, you may someday be happy to have left it there.
    
    

现在你的CentOS仍然在/usr/bin/正式支持旧版本的gcc和g,你的CentOS正式支持/lib中的32位库,你的CentOS官方支持/lib64中的64位库,你的CentOS官方支持包含文件/usr/include。

你的新gcc和g在/usr/local/bin中,/usr/local/lib中有较新的32位lib,/usr/local/lib64中较新的64位lib,以及/usr/中较新的包含在/usr/local/include。

Zuoxiaojuan profile image