gcc

使用低版本的交叉编译器

从 linaro 官网下载使用

Posted by Jerry Chen on June 30, 2020

使用低版本交叉编译器

看版本

  • Linux 电脑操作系统位数

    x86_64 是 64 位,i686 是 32 位;

    1
    2
    
    jerry@CLOU-PC ~ → uname --m
    x86_64
    
  • 目标 arm-linux 操作系统信息

    armv7l 选择 arm-linux-gnueabihf;

    具体选择见:https://www.linaro.org/downloads/;

    1
    2
    
    root@CL818C90:~# uname --m
    armv7l
    

卸载高版本的 arm-linux-gnueabihf

如果使用 sudo apt-get install gcc-arm-linux-gnueabihf 安装过交叉编译器,可使用 sudo apt-get remove --auto-remove gcc-arm-linux-gnueabihf 进行卸载;

linaro 官网下载

官网 下载页 提供了二进制和源码下载;

为了方便,直接下载二进制使用;

进入 4.9 二进制下载页 下载 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 文件;

其中 x86_64 和我的 Linux PC 匹配,arm-linux-gnueabihf 和目标 arm 匹配;

使用方法

1
2
3
tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
sudo rm /bin/arm-linux-gnueabihf-*
sudo ln -sf $(pwd)/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-* /bin/

降低 gcc 版本

这个算低频需求吧,使用低版本交叉编译器不需要降低 gcc 版本;

安装 gcc-4.9

首先加入一个老版本源:

1
2
3
4
sudo vim /etc/apt/sources.list

# 加入下面的源
deb http://mirrors.aliyun.com/ubuntu/ xenial main universe

接着更新并安装gcc、g++:

1
2
3
sudo apt update
sudo apt install g++-4.9
sudo apt install gcc-4.9

切换 gcc 和 g++ 版本

我的环境中存在 gcc-4.9 和 gcc-9;

设置管理 gcc:

实际上就是命令链接,将 /usr/bin/gcc 链接到 /etc/alternatives/gcc,其中 gcc 是我们设置的管理名称;而将它链接到 /usr/bin/gcc-4.9 还是 /usr/bin/gcc-9 受优先级和手动配置的控制;

删除可用 sudo update-alternatives --remove gcc /usr/bin/gcc-4.9

显示详情 update-alternatives --display gcc

1
2
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50

设置管理 g++:

1
2
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 50

配置 gcc 版本:

1
sudo update-alternatives --config gcc
1
2
3
4
5
  Selection    Path              Priority   Status
----------------------------------------------------------
  0            /usr/bin/gcc-9     50        auto mode
* 1            /usr/bin/gcc-4.9   40        manual mode
  2            /usr/bin/gcc-9     50        manual mode

配置 g++ 版本:

1
sudo update-alternatives --config g++
1
2
3
4
5
  Selection    Path              Priority   Status
----------------------------------------------------------
  0            /usr/bin/g++-9     50        auto mode
* 1            /usr/bin/g++-4.9   40        manual mode
  2            /usr/bin/g++-9     50        manual mode