搭建编译环境时,有时需要安装指定版本的gcc-aarch64-linux-gnu、gcc-arm-linux-gnueabi工具包, 以安装gcc-aarch64-linux-gnu的5.x版本为例,如果直接通过执行指令:apt-get install gcc-aarch64-linux-gnu gcc-5-aarch64-linux-gnu,会报如下错误提示:
下面我以**Ubuntu中安装version5.5版本的gcc-aarch64-linux-gnu为例讲解,**gcc-arm-linux-gnueabi的安装方法一样
1. 下载想要安装的版本工具包
要下比较新的版本的话,可以去arm developer官网下载,链接如下: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads 如果上面的链接没有你想要的版本,可以去linaro官网看看,里面比较旧的版本还有,链接如下: https://releases.linaro.org/components/toolchain/binaries/
1-1.由于我想安装的是5.x的版本,所以我是到上面那个linaro官网下载的,点击进入官网下载界面如下:
1-2.我选择下载5.5版本,所以点击上图的5.5-2017-10这个文件夹进去,看到如下:
1-3.可以看到上图有aarch64-linux-gnu这个文件夹,请点击进去,看到如下:
直接点击上图红色箭头指向的那个文件,即可下载工具包到本地电脑。
如果你需要安装的是gcc-arm-linux-gnueabi工具包,那么,上面的1-3步中,选择文件夹arm-linux-gnueabi,同样去下载对应的工具包即可。
2.在你的Ubuntu中安装默认版本(这个版本一般是适配你环境较新的)
2-1.在root权限下,执行指令,具体如下: root@bruce:/# apt-get install gcc-aarch64-linux-gnu 2-2.执行完后,会在你的环境中安装一个默认适配你环境的较新版本,为查看这个版本是什么,可以输入: root@bruce:/# aarch64-linux-gnu-gcc -v 我输完后看到版本信息如下:
可以看到当前版本是什么,我的是版本9.3,然后再接着去安装你想要的版本。
3.把前面第1步中下载好的工具包传到Ubuntu系统,然后放到目标文件夹下解压
3-1.通过filezilla工具,把开始第1步下载到本地电脑的工具包传到Ubuntu中,如果是用的其他传输工具也可,传输方法不再缀述;
3-2.在Ubuntu中,把工具包文件拷贝到你想放置的文件夹,由于在第2步中安装默认版本时,对应版本包是默认存放在/usr/bin目录下,所以,我这里也把工具包放到该目录下进行解压,解压后会得到一个工具包文件夹,操作如下: root@bruce:/#cp xxx /usr/bin //xxx代表你工具包放置的位置,如果原本就放到/usr/bin下,就不用执行这个cp动作了 root@bruce:/#cd usr/bin/ root@bruce:/usr/bin#xz -d gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz root@bruce:/usr/bin#tar -xvf gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar root@bruce:/usr/bin#cd …/…/ //切回根目录,除了这步解压会到对应目录下执行,其他的操作都是在根目录下执行 执行完后,在usr/bin/下会有一个gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu文件夹,这样,就已经把这个版本的工具包装到Ubuntu下,但是还需进行下面步骤的配置才可使用。
4.使用update-alternatives指令配置添加链接(参考《奔跑吧Linux内核入门篇—张天飞(笨叔叔)》)
4-1.先介绍一下update-alternatives命令的用法,如下: update-alternatives --install [link] [name] [path] [priority] 参数含义介绍(特别重要,涉及下面对指令使用的理解): [link]:指向/etc/alternatives/的符号引用 [name]:链接名称 [path]:这个命令对应的可执行文件的实际路径(也就是上面第3步工具包路径) [priority]:优先级,在auto模式下,数字越大,优先级越高。
4-2.向系统添加version 5.5的链接并设置优先级 root@bruce:/# update-alternatives --install /usr/bin/aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc /usr/bin/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu 5 这里参数我们写aarch64-linux-gnu-gcc,
写我们工具包的实际位置(要写到工具包文件夹),我的是/usr/bin/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu
执行完上面指令后会有如下提示:
4-3.向系统添加我们第2步中默认安装的version(我这里的是9.3)的链接并设置优先级 root@bruce:/# update-alternatives --install /usr/bin/aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc-9 9 注意,这里你虽然在第2步中通过aarch64-linux-gnu-gcc -v查看过默认版本的版本号(我的是版本9.3),但你可能还是不知道其
的实际路径中默认安装的工具包的文件夹名,没有关系,我们可以使用输命令时tab键的补全提示功能;以我上面为例,我们在上面输入
路径参数时,先输入/usr/bin/aarch64-linux-gnu-gc,输到这里时按tab键,命令端会进行提示,如下:
这里我们选红色箭头指的那个文件夹补全。
4-4.我们上面全部配置好后,系统中就有两个版本的aarch64-linux-gnu-gcc可用了,那么我们使用时如何切换使用的版本呢?可以通过如下指令进行配置: root@bruce:/# update-alternatives --config aarch64-linux-gnu-gcc 执行完后可以看到如下,根据图片中划线那行的提示,我要使用5.5版本,所以就输入了2,下面是输完2后的效果: 4-5.执行完上面的设置后,系统编译时执行aarch64-linux-gnu-gcc使用的工具版本就是5.5的了,但是如果此时直接使用aarch64-linux-gnu-gcc,会出现报错,因为5.5版本的全局环境变量没有设置,比如执行:aarch64-linux-gnu-gcc -v查看当前版本号时,会报错提示“bash: /usr/bin/aarch64-linux-gnu-gcc: Is a directory” 所以,请按下面第5步操作配置全局环境变量。
5.配置下载工具包安装的aarch64-linux-gnu-gcc版本(version 5.5)的运行环境
5-1.在~/.bashrc中最后面加上下面那句PATH配置: export PATH=$PATH:/usr/bin/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin 这里/usr/bin/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu是我们工具包存放的实际位置,整个路径要写到工具包的bin文件夹下,即:/usr/bin/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin 加上那句话后请保存退出。 5-2.执行source指令使配置生效,如下: root@bruce:/# source ~/.bashrc 5-3.再次执行如下指令检查aarch64-linux-gnu-gcc是否可用了并查看当前系统使用的版本号: root@bruce:/# aarch64-linux-gnu-gcc -v 可以看到如下,当前正在使用的版本号为5.5了:
如果我们后面想切换系统使用的编译器版本号,可以再按照上面4-4的操作去修改。
|