ubuntu系统如何源码安装GCC

您所在的位置:网站首页 Ubuntu如何复制代码 ubuntu系统如何源码安装GCC

ubuntu系统如何源码安装GCC

2024-07-12 02:51| 来源: 网络整理| 查看: 265

文章目录 一、前言二、准备工作三、下载GCC源代码四、配置编译选项五、编译和安装GCC六、验证GCC是否安装成功七、设置新安装的GCC为默认版本八、可能出现的问题及解决方法九、总结十、参考资料

一、前言

GCC(GNU Compiler Collection),全称为GNU编译器集合,是一套用于多种编程语言的编译器。它包括C、C++、Objective-C、Fortran、Ada以及Go等语言的前端,并且支持多种处理器架构。GCC是开源软件世界中不可或缺的工具之一,被广泛应用于各种操作系统和平台。

选择源码安装GCC的原因有很多。首先,源码安装通常能提供更多的自定义选项,可以根据具体需求配置GCC的功能。其次,通过源码安装,你可以获取到最新版本的GCC,以便使用最新的编译技术。此外,对于某些特殊环境或旧版系统,可能无法通过包管理器获得最新的GCC,这时源码安装就显得尤为重要。

在本教程中,我们将详细地介绍如何从源代码编译并安装GCC。这个过程可能会比直接使用包管理器安装更为复杂,但也能让你更深入地了解GCC的工作原理。同时,学习源码安装GCC也将帮助你更好地应对其他软件的源码安装过程。

二、准备工作

在开始编译和安装GCC之前,我们需要确保系统环境已经准备好,并且安装了所有必要的依赖软件包。

确认系统环境(例如Linux发行版) 首先,你需要确认你的操作系统是支持GCC的。一般来说,大部分Linux发行版都默认包含了GCC,但是版本可能较旧。如果你想使用最新的GCC版本,你可能需要从源代码进行编译和安装。 另外,不同的Linux发行版可能会有不同的命令行工具和软件包管理器。在本教程中,我们将以Ubuntu为例,介绍如何安装GCC的依赖软件包。如果你使用的是其他Linux发行版,请参考对应的操作系统文档来获取相关的信息。安装必要的依赖软件包(如gmp, mpfr, mpc等) GCC的编译过程需要一些外部库的支持,包括GMP(GNU Multiple Precision Arithmetic Library)、MPFR(Multiple Precision Floating-Point Reliable)和MPC(Multiprecision Computational Geometry and Linear Algebra)。这些库提供了高精度算术运算的支持,是GCC的重要组成部分。

在Debian/Ubuntu系统上,可以使用以下命令安装基本的构建工具:

sudo apt-get update sudo apt-get install build-essential

额外的依赖项可能包括:

sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libc6-dev texinfo flex bison

这将更新你的软件包列表,并安装所需的GMP、MPFR和MPC开发库。

三、下载GCC源代码 通过GCC官方网站下载最新版本的源代码

首先,访问GCC的官方网站,找到并下载最新的稳定版源代码。不要点"Download",直接点击网页上的**“Source”**按钮,然后在下拉菜单中选择“Source”来获取源代码。这里 SomeLocalDir 是希望将源代码克隆到的本地目录名称。如果目录不存在,Git 将会创建这个目录。

git clone git://gcc.gnu.org/git/gcc.git [SomeLocalDir] 通过GitHub下载GCC源代码

你也可以通过GCC的GitHub仓库(https://github.com/gcc-mirror/gcc)下载源代码。在这个页面上,你可以找到不同版本的源代码,包括最新的开发版本和稳定版本。要下载一个版本,只需点击对应的标签(如release-12.0.0),然后在新打开的页面上点击绿色的“Code”按钮,选择“Download ZIP”或“Clone”选项来下载或克隆源代码。

https://github.com/gcc-mirror/gcc.git

我用的是github上的代码

四、配置编译选项 进入GCC源代码目录 在解压后的目录中,执行以下命令以进入GCC的源代码目录:执行./configure命令并设置相关参数(如–prefix=指定安装路径) 接下来,我们需要运行configure脚本来配置GCC的编译选项。在这个过程中,你可以指定GCC的安装路径、支持的语言以及其他的编译选项。

下面是一个基本的例子:

./configure --prefix=/usr/local --enable-languages=c,c++,fortran,objc,obj-c++ --program-suffix=-12.0.0 --disable-multilib

在这个例子中,我们指定了GCC的安装路径为/usr/local,并且只支持C、C++、Fortran和Objective-C语言。此外,我们还添加了一个后缀-12.0.0,以便区分系统默认的GCC版本。

下面是参数说明:

–prefix=/usr/local: 这个参数指定了安装目录。在此例中,编译完成后的GCC将被安装在 /usr/local 目录下。这意味着GCC的可执行文件、库文件、文档等都会放在 /usr/local/bin、/usr/local/lib、/usr/local/share/doc 等子目录下。–enable-languages=c,c++,fortran,objc,obj-c++: 这个参数指定了需要编译的编程语言的编译器。这里包括C ©、C++ (c++)、Fortran (fortran)、Objective-C (objc) 和 Objective-C++ (obj-c++)。这意味着GCC将支持这些语言的编译。–program-suffix=-12.0.0: 这个参数为安装的程序添加了后缀。在此例中,所有GCC编译的程序(如 gcc、g++、gfortran 等)将带有 -12.0.0 后缀。例如,GCC的可执行文件将被命名为 gcc-12.0.0,而不是默认的 gcc。这对于在同一系统上安装多个版本的GCC非常有用,因为它允许用户区分和选择不同的版本。–disable-multilib: 此参数用于禁用多库支持。通常,在64位系统上,GCC可能会尝试编译和安装32位(multilib)版本的库。使用这个参数意味着GCC将只为当前系统的原生架构编译程序(例如,仅为64位系统编译)。这有助于减少编译时间和减小安装后的大小,但也意味着不能使用这个GCC版本编译32位程序。

下面是我最常用的命令,prefix一般默认就是/usr/local,不需要设置。

./configure --enable-languages=c,c++ --disable-multilib 五、编译和安装GCC 使用make命令进行编译

完成配置后,我们可以使用make命令开始编译GCC。这个过程可能需要一段时间,取决于你的计算机性能。你可以通过以下命令启动编译过程:

make -j$(nproc)

这里,-j$(nproc)参数表示使用所有可用的处理器核心进行并行编译,从而加快编译速度。

使用sudo make install命令进行安装 sudo make install 六、验证GCC是否安装成功

如果在configure的时候设置了--program-suffix=-12.0.0,那么gcc-12.0.0就是我们新安装的gcc。我们可能通过命令,可以通过运行gcc-12.0.0或g+±12.0.0命令来查看GCC的版本信息。例如:

gcc-12.0.0 --version

这将显示刚刚安装的GCC版本的相关信息。

我没有设置这个参数,修改为默认gcc后用gcc --version查看到的版本为14.0.0。

七、设置新安装的GCC为默认版本

如果已经将源码编译的GCC安装在/usr/local目录下,可以通过以下几种方法设置它为默认的GCC:

方法1:使用update-alternatives(仅限于Debian/Ubuntu) 对于基于Debian的系统(比如Ubuntu),可以使用update-alternatives系统来管理不同版本的GCC。首先,设置新的GCC版本: sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 60 --slave /usr/bin/g++ g++ /usr/local/bin/g++

这里的60是优先级;如果安装了多个版本的GCC,优先级最高的将成为默认版本。 这个命令详细解释一下:

update-alternatives:这是Debian及其衍生系统(如Ubuntu)中用于管理同一命令的多个版本的工具。–install:这是一个选项,用于添加一个新的可选项到update-alternatives系统。/usr/bin/gcc gcc /usr/local/bin/gcc 60:这部分命令执行以下操作: /usr/bin/gcc:这是update-alternatives系统中GCC的通用名或链接名。它是调用GCC时所使用的标准路径。gcc:这是特定可选项的名字。/usr/local/bin/gcc:这是新安装的GCC的实际路径。60:这是分配给这个特定版本的GCC的优先级。在有多个版本的GCC可供选择时,优先级最高的版本会成为默认版本。 –slave /usr/bin/g++ g++ /usr/local/bin/g++:这是一个附加命令,用于同时更新g++(GCC的C++编译器)的版本。它确保了切换到新版本的gcc时,相应的g++版本也会被切换。 /usr/bin/g++:这是系统中g++的标准路径。g++:这是这个特定版本的g++的名字。/usr/local/bin/g++:这是新安装的g++的实际路径。 总的来说,这个命令的功能是将编译的GCC(位于/usr/local/bin/gcc)添加到系统中可用的GCC版本中,并设置优先级,同时为g++做相同的操作。这样,当使用gcc或g++命令时,系统将根据设置的优先级来决定使用哪个版本。通过这种方式,可以在不同版本的GCC之间方便地切换。

接下来,使用下面的命令选择默认的GCC版本:

sudo update-alternatives --config gcc

根据提示选择安装的新版本。

方法2:更新PATH环境变量 在这种方法中,将修改PATH环境变量,使得系统首先搜索/usr/local/bin中的可执行文件。如果使用的是bash shell,可以在$home/.bashrc文件中添加如下行: export PATH=/usr/local/bin:$PATH

然后重新加载配置文件,可以通过以下命令实现:

source ~/.bashrc

或者重新登录用户账户。

方法3:创建软链接 这种方法涉及到创建指向新GCC版本的软链接。这通常不是首选方法,因为它可能会覆盖或混淆系统默认的GCC链接,但仍可作为一种解决方案。执行以下命令: sudo ln -sf /usr/local/bin/gcc /usr/bin/gcc sudo ln -sf /usr/local/bin/g++ /usr/bin/g++

以上三种方法没有优先级,我采用的是第一种。

重要提示:

在更改系统默认GCC之前,请确保这不会对系统中的其他依赖GCC的应用程序产生负面影响。 如果系统依赖于特定版本的GCC,更改默认版本可能会导致问题。对于多用户系统,更改整个系统的默认GCC可能会影响所有用户。考虑仅对需要的用户或应用程序更改默认GCC。在修改环境变量或系统链接时务必谨慎,以避免潜在的系统问题。根据具体需求和系统环境选择合适的方法。如果在操作过程中遇到问题,可能需要寻求专业帮助或参考相关文档。 八、可能出现的问题及解决方法

在编译和安装GCC的过程中,你可能会遇到各种问题。这里列出了一些常见的问题及其解决方法。

配置或编译过程中遇到的常见问题 缺少依赖库 在配置或编译过程中,如果系统提示缺少某个库,例如libgmp-dev、libmpfr-dev或libmpc-dev等,你需要使用包管理器(如apt-get或yum)来安装这些缺失的库。内存不足 如果你的计算机内存较小,编译过程可能会因为内存不足而失败。为了解决这个问题,你可以尝试增加交换空间,或者减少并行编译的数量(即降低make -j参数的值)。编译错误 编译过程中可能遇到各种错误,例如语法错误、类型不匹配等。对于这些问题,你需要查看错误信息,并根据提示修复代码。 一些通用的步骤和建议 检查错误日志 错误信息通常会在 make 的输出中详细说明,尤其是在它遇到问题并停止的地方。 检查输出信息中是否有更具体的错误描述,这可能会指出问题的原因。确保满足所有依赖 编译 GCC 需要一些依赖库和工具,确保系统已经安装了这些依赖。依赖项可能包括但不限于:GMP、MPC、MPFR 等。使用干净的构建环境 如果之前尝试过编译,并且部分编译成功,可能需要从一个干净的环境开始。在 GCC 源代码目录中执行make distclean可以清理之前的构建尝试。关注配置选项 确保配置选项(执行 ./configure 时使用的选项)适合系统。错误的配置选项可能导致编译失败。如果不确定,可以使用默认的配置选项,或者查找适合系统的特定配置指南。考虑系统资源 确保系统有足够的内存和磁盘空间来编译 GCC。GCC 编译过程资源消耗较大。 九、总结

在本教程中,我们详细介绍了如何从源代码编译并安装GCC。整个过程包括了以下几个步骤:

准备工作:确认系统环境(例如Linux发行版)并安装必要的依赖软件包。下载GCC源代码:访问GCC官方网站或GitHub下载最新版本的源代码,并解压到指定目录。配置编译选项:进入GCC源代码目录并执行./configure命令以设置相关参数。编译和安装GCC:使用make命令进行编译,并使用sudo make install命令进行安装。验证GCC是否安装成功:查看GCC版本信息并编译一个简单的C程序来测试GCC是否能正常工作。设置新安装的GCC为默认版本:更新系统环境变量并将新安装的GCC设为默认版本。

理解这个过程的重要性在于,它不仅可以帮助你获取最新的GCC版本,还可以让你更深入地了解GCC的工作原理和编译器的内部结构。此外,学习源码安装GCC的经验也可以应用于其他开源软件的安装过程中。

可能的应用场景包括但不限于:

在某些情况下,你的操作系统可能不提供最新的GCC版本,这时就需要通过源码安装来获取最新的功能和改进。如果你需要对GCC进行定制,例如禁用某些特性或者添加新的优化选项,那么源码安装就是一个很好的选择。作为开发者,掌握源码安装的过程可以帮助你更好地理解和调试自己的项目。 十、参考资料

以下是几个有用的链接和其他资源,供你进一步了解GCC和源码安装的相关知识:

GCC官方网站:https://gcc.gnu.org/GCC用户手册:https://gcc.gnu.org/onlinedocs/gcc/index.html如何从源代码安装软件 - Arch Linux Wiki:https://wiki.archlinux.org/title/From_SourceGitHub上的GCC源代码仓库:https://github.com/gcc-mirror/gcc


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3