记一次在64位Ubuntu 16.04下成功安装arm-none-eabi-gcc交叉编译器的过程

2018.07.28

刚开始在网上找了很多教程,都是大同小异的步骤:

  1. 在官网下载arm-none-eabi-gcc的.tar.bz2压缩包
  2. 解压到自定义目录
  3. 打开.bashrc和.profie添加环境变量和路径
  4. 生效更改
  5. 查询编译器是否配置成功

上面的安装步骤我试了很多种都没成功,后来我发现可以通过终端自动下载安装。

下面是安装步骤:

在进行安装前需要一个前置条件,ubuntu的系统自动更新没有被关闭,并且安装了最新推送的系统更新。

1.首先切换到root权限,保险起见再跑一遍更新:

sudo su
apt-get update
apt-get upgrade

2.在root权限下安装失败,可能会提示以下信息:

root@xxj-virtual-machine:/home/xxj# arm-none-eabi-gcc -v
程序“arm-none-eabi-gcc”尚未安装。 您可以使用以下命令安装:
apt install gcc-arm-none-eabi
root@xxj-virtual-machine:/home/xxj# arm-none-eabi-gcc -v
程序“arm-none-eabi-gcc”尚未安装。 您可以使用以下命令安装:
apt install gcc-arm-none-eabi

3.按照提示输入apt install gcc-arm-none-eabi命令开始安装:

root@xxj-virtual-machine:/home/xxj# apt install gcc-arm-none-eabi
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  libllvm4.0 linux-headers-4.4.0-92 linux-headers-4.4.0-92-generic
  linux-image-4.4.0-92-generic linux-image-extra-4.4.0-92-generic
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  binutils-arm-none-eabi libnewlib-arm-none-eabi libnewlib-dev
  libstdc++-arm-none-eabi-newlib
建议安装:
  libnewlib-doc
下列【新】软件包将被安装:
  binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi
  libnewlib-dev libstdc++-arm-none-eabi-newlib
升级了 0 个软件包,新安装了 5 个软件包,要卸载 0 个软件包,有 6 个软件包未被升级。
需要下载 65.1 MB 的归档。
解压缩后会消耗 610 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 binutils-arm-none-eabi amd64 2.26-4ubuntu1+8 [2,083 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 gcc-arm-none-eabi amd64 15:4.9.3+svn231177-1 [17.3 MB]
获取:3 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libnewlib-dev all 2.2.0+git20150830.5a3d536-1 [105 kB]
获取:4 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libnewlib-arm-none-eabi all 2.2.0+git20150830.5a3d536-1 [14.0 MB]
获取:5 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libstdc++-arm-none-eabi-newlib all 15:4.9.3+svn227297-1+8 [31.6 MB]
已下载 65.1 MB,耗时 28秒 (2,317 kB/s)                                         
正在选中未选择的软件包 binutils-arm-none-eabi。
(正在读取数据库 ... 系统当前共安装有 240351 个文件和目录。)
正准备解包 .../binutils-arm-none-eabi_2.26-4ubuntu1+8_amd64.deb  ...
正在解包 binutils-arm-none-eabi (2.26-4ubuntu1+8) ...
正在选中未选择的软件包 gcc-arm-none-eabi。
正准备解包 .../gcc-arm-none-eabi_15%3a4.9.3+svn231177-1_amd64.deb  ...
正在解包 gcc-arm-none-eabi (15:4.9.3+svn231177-1) ...
正在选中未选择的软件包 libnewlib-dev。
正准备解包 .../libnewlib-dev_2.2.0+git20150830.5a3d536-1_all.deb  ...
正在解包 libnewlib-dev (2.2.0+git20150830.5a3d536-1) ...
正在选中未选择的软件包 libnewlib-arm-none-eabi。
正准备解包 .../libnewlib-arm-none-eabi_2.2.0+git20150830.5a3d536-1_all.deb  ...
正在解包 libnewlib-arm-none-eabi (2.2.0+git20150830.5a3d536-1) ...
正在选中未选择的软件包 libstdc++-arm-none-eabi-newlib。
正准备解包 .../libstdc++-arm-none-eabi-newlib_15%3a4.9.3+svn227297-1+8_all.deb  ...
正在解包 libstdc++-arm-none-eabi-newlib (15:4.9.3+svn227297-1+8) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...
正在设置 binutils-arm-none-eabi (2.26-4ubuntu1+8) ...
正在设置 gcc-arm-none-eabi (15:4.9.3+svn231177-1) ...
正在设置 libnewlib-dev (2.2.0+git20150830.5a3d536-1) ...
正在设置 libnewlib-arm-none-eabi (2.2.0+git20150830.5a3d536-1) ...
正在设置 libstdc++-arm-none-eabi-newlib (15:4.9.3+svn227297-1+8) ...
正在处理用于 libc-bin (2.23-0ubuntu10) 的触发器 ...

4.安装完成后查询版本号:

root@xxj-virtual-machine:/home/xxj# arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-none-eabi/4.9.3/lto-wrapper
Target: arm-none-eabi
Configured with: ../src/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/lib/include' --mandir='/usr/lib/share/man' --infodir='/usr/lib/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir='/usr/lib/lib/x86_64-linux-gnu' --libexecdir='/usr/lib/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --mandir=/usr/share/man --enable-languages=c,c++,lto --enable-multilib --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --build=x86_64-linux-gnu --target=arm-none-eabi --with-system-zlib --with-gnu-as --with-gnu-ld --with-pkgversion=15:4.9.3+svn231177-1 --without-included-gettext --prefix=/usr/lib --infodir=/usr/share/doc/gcc-arm-none-eabi/info --htmldir=/usr/share/doc/gcc-arm-none-eabi/html --pdfdir=/usr/share/doc/gcc-arm-none-eabi/pdf --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --disable-libstdc++-v3 --host=x86_64-linux-gnu --with-headers=no --without-newlib --with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r CFLAGS='-g -O2 -fstack-protector-strong' CPPFLAGS=-D_FORTIFY_SOURCE=2 CXXFLAGS='-g -O2 -fstack-protector-strong' FCFLAGS='-g -O2 -fstack-protector-strong' FFLAGS='-g -O2 -fstack-protector-strong' GCJFLAGS='-g -O2 -fstack-protector-strong' LDFLAGS='-Wl,-Bsymbolic-functions -Wl,-z,relro' OBJCFLAGS='-g -O2 -fstack-protector-strong' OBJCXXFLAGS='-g -O2 -fstack-protector-strong' INHIBIT_LIBC_CFLAGS=-DUSE_TM_CLONE_REGISTRY=0 AR_FOR_TARGET=arm-none-eabi-ar AS_FOR_TARGET=arm-none-eabi-as LD_FOR_TARGET=arm-none-eabi-ld NM_FOR_TARGET=arm-none-eabi-nm OBJDUMP_FOR_TARGET=arm-none-eabi-objdump RANLIB_FOR_TARGET=arm-none-eabi-ranlib READELF_FOR_TARGET=arm-none-eabi-readelf STRIP_FOR_TARGET=arm-none-eabi-strip
Thread model: single
gcc version 4.9.3 20150529 (prerelease) (15:4.9.3+svn231177-1) 
root@xxj-virtual-machine:/home/xxj# 

版本号查询成功,说明安装正确,最后的版本号是:gcc version 4.9.3 20150529 (prerelease) (15:4.9.3+svn231177-1) 

ubuntu16.04使用这个方法安装的默认版本号就是4.9.3,落后官方版本比较多,不一定符合实际开发的要求,但是简单不易出错。大多数教程使用的方法可以安装任意版本,但是比较容易出错,对于刚开始接触Linux的萌新来说可能有点吃力。

扫描二维码关注公众号,回复: 4177461 查看本文章

比如我¯\_(ツ)_/¯

猜你喜欢

转载自blog.csdn.net/zzz_xxj/article/details/81256383