当前位置: 首页 > news >正文

Linux 本地编译安装 gcc9

这里演示非sudo权限的本地linux 用户安装 gcc9

下载源代码:

可以从GCC官方网站或其镜像站点下载GCC 9的源代码压缩包。使用wget或curl命令,这通常不需要额外权限

wget https://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.gz
tar -xf gcc-9.5.0.tar.gz
cd gcc-9.5.0

获取前提条件(Prerequisites):

GCC源码中有一个脚本可以帮助你下载编译GCC所需的其他软件包。这个脚本应该可以在你的用户目录下运行,而不需要管理员权限:

./contrib/download_prerequisites

编译GCC

  1. 创建一个构建目录并配置编译选项:
    创建一个新的目录用于编译,并从该目录中调用…/configure以避免污染源代码树。同时指定安装路径为你的家目录下的某个位置,这样就不需要管理员权限了。
    这里几个参数需要解释一下, enable-languages顾名思义, program-suffix=-9.5.0 就是说最后编译出的程序名字后会有后缀, 如gcc-9.5.0, 建议加上后缀区分版本.
    –prefix指定的是之后install对应的目录, 默认是/usr/local/bin, 但是这里不建议放在这里, 容易污染PATH, 所以建议自定义位置, 具有更高自由度和可控度, 有问题大不了删了呗. 对于个人用户而言, 其他参数基本上按照默认即可.
mkdir build
cd build
../configure --prefix=$HOME/local/gcc-9.5.0 --program-suffix=-9.5.0 --enable-languages=c,c++ --disable-multilib
  1. 开始编译:
    运行make命令来编译GCC。这一步可能需要一些时间,取决于你的计算机性能。
make -j$(nproc)
  1. 安装到本地目录:
    使用make install将编译好的GCC安装到之前configure时指定的前缀路径下。
make install
  1. 更新环境变量:
    安装完成后,你需要更新你的PATH环境变量,以便能够找到新安装的GCC二进制文件。你可以通过编辑你的.bashrc或.bash_profile文件来实现这一点(根据你的shell类型不同选择相应的文件)。

gcc9.5.0配置

export GCC9_HOME=$HOME/local/gcc-9.5.0
export PATH=$HOME/local/gcc-9/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GCC9_HOME/lib:$GCC9_HOME/lib32:$GCC9_HOME/lib64

然后更新环境变量

source ~/.bashrc
  1. 验证安装:
    最后,你可以检查GCC版本以确认安装是否成功。
gcc-9.5.0 --version
gcc (GCC) 9.5.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

使用

如果不希望更换默认GCC版本, 只需要在命令行临时输入:

export CC=$HOME/local/gcc-9/bin/gcc
export CXX=$HOME/local/gcc-9/bin/g++
http://www.lryc.cn/news/505504.html

相关文章:

  • SpringBoot 自定义事件
  • unity shader中的逐像素光源和逐顶点光源
  • MongoDB-副本集
  • 【图像处理lec7】图像恢复、去噪
  • C# 连接ClickHouse 数据库
  • 在安卓Android应用中实现二维码图像的保存与条形码文本合并
  • Vue3 重置ref或者reactive属性值
  • 深入理解STL list erase
  • 使用 Python 从 ROS Bag 中提取图像:详解与实现
  • MYSQL执行一条update语句,期间发生了什么
  • 前端性能优化思路
  • 有向图判环(leetcode207,leetcode210)
  • 概率论得学习和整理25:EXCEL 关于直方图/ 频度图 /hist图的细节,2种做hist图的方法
  • PHP8.4下webman直接使用topthink/think-orm
  • 【从零开始入门unity游戏开发之——C#篇04】栈(Stack)和堆(Heap),值类型和引用类型,以及特殊的引用类型string,垃圾回收( GC)
  • 基于微信小程序的小区疫情防控ssm+论文源码调试讲解
  • 第P2周:Pytorch实现CIFAR10彩色图片识别
  • CTFHub 命令注入-综合练习(学习记录)
  • OpenCV目标检测 级联分类器 C++实现
  • QT6 Socket通讯封装(TCP/UDP)
  • elasticsearch设置密码访问
  • 彻底理解如何优化接口性能
  • C# 位运算
  • 【Flink-scala】DataStream编程模型之状态编程
  • RabbitMQ的核心组件有哪些?
  • 【Linux基础】基本开发工具的使用
  • 常见的数据结构和应用场景
  • 爬虫基础学习
  • C++对象数组对象指针对象指针数组
  • D96【python 接口自动化学习】- pytest进阶之fixture用法