天天看點

記一次在64位Ubuntu 16.04下成功安裝arm-none-eabi-gcc交叉編譯器的過程2018.07.28下面是安裝步驟:

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權限下安裝失敗,可能會提示以下資訊:

[email protected]:/home/xxj# arm-none-eabi-gcc -v
程式“arm-none-eabi-gcc”尚未安裝。 您可以使用以下指令安裝:
apt install gcc-arm-none-eabi
[email protected]:/home/xxj# arm-none-eabi-gcc -v
程式“arm-none-eabi-gcc”尚未安裝。 您可以使用以下指令安裝:
apt install gcc-arm-none-eabi
           

3.按照提示輸入apt install gcc-arm-none-eabi指令開始安裝:

[email protected]:/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.安裝完成後查詢版本号:

[email protected]:/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) 
[email protected]:/home/xxj# 
           

版本号查詢成功,說明安裝正确,最後的版本号是:gcc version 4.9.3 20150529 (prerelease) (15:4.9.3+svn231177-1) 

ubuntu16.04使用這個方法安裝的預設版本号就是4.9.3,落後官方版本比較多,不一定符合實際開發的要求,但是簡單不易出錯。大多數教程使用的方法可以安裝任意版本,但是比較容易出錯,對于剛開始接觸Linux的萌新來說可能有點吃力。

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

繼續閱讀