Skip to main content

Debian 12 中安装老版本的 gcc

背景

最近在C++中遇到了老版本的属性初始化问题,在新版本的gcc中无法复现。因此,需要安装老版本的gcc-4.8.5。然而,直接安装的话,源里面是没有的。因此,需要手动下载对应的 .deb 安装包。

步骤

  1. 查找 .deb 安装包

    • 访问 deb安装包搜索网站
    • 选择适合你系统的 .deb 包(对于非移动手机或Mac新的arm芯片,选择amd64版本)。
  2. 下载 .deb 包

    • 在网页中找到所需的 .deb 包及其依赖项。
    • 复制下载链接,使用 wget 命令进行下载。例如:
      wget 'http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8_4.8.5-4ubuntu8_amd64.deb'
  3. 安装 .deb 包

    • 使用 dpkg 命令安装主包,如果提示缺少依赖项,继续下载并安装这些依赖项。例如:
      sudo dpkg -i gcc-4.8_4.8.5-4ubuntu8_amd64.deb
  4. 下载并安装依赖项

    • 根据提示,下载并安装所需的依赖项。例如:
      wget 'http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.8/cpp-4.8_4.8.5-4ubuntu8_amd64.deb'
      wget 'http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb'
      wget 'http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.8/libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb'
      wget 'http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.8/libasan0_4.8.5-4ubuntu8_amd64.deb'
      wget 'http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.8/g++-4.8_4.8.5-4ubuntu8_amd64.deb'
      wget 'http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-4.8/libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb'
  5. 安装顺序

    • 按照以下顺序安装各个包:
      sudo dpkg -i libasan0_4.8.5-4ubuntu8_amd64.deb
      sudo dpkg -i libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb
      sudo dpkg -i cpp-4.8_4.8.5-4ubuntu8_amd64.deb gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb
      sudo dpkg -i gcc-4.8_4.8.5-4ubuntu8_amd64.deb
      sudo dpkg -i libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb g++-4.8_4.8.5-4ubuntu8_amd64.deb
  6. 使用 update-alternatives 管理多个版本的 gcc

    • 设置多个版本的 gcc:

      sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 48 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
      sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10
      • 48100 表示优先级,优先级高的即为默认的。
    • 选择默认的 gcc 版本:

      sudo update-alternatives --config gcc
      • 根据提示,选择1或者2即可,非常方便。

控制流图