Ubuntu9.10製作ARM交叉編譯器

2021-01-08 電子產品世界
本環境內核版本:Linux ubuntu910 2.6.31-21-generic #59-Ubuntu SMPi686 GNU/Linux

本文引用地址:http://www.eepw.com.cn/article/201611/317922.htm

準備軟體包如下:

bison_13a2.3.dfsg-4build1_i386.deb

build-essential_11.4_i386.deb

flex_2.5.33-10build1_i386.deb

libncurses5-dev_5.6+20071124-1ubuntu2_i386.deb

m4_1.4.8-1build1_i386.deb

patch_2.5.9-5_i386.deb

gcc-3.4.5.tar.gz

glibc-2.3.6.tar.gz

linux-2.6.26.5.tar.gz

crosstool-0.43.tar.gz

binutils-2.15.tar.gz

glibc-linuxthreads-2.3.3.tar.gz

linux-libc-headers-2.6.12.0.tar.bz2

furtherchan@ubuntu910:~/Downloads$sudo dpkg -i m4_1.4.8-1build1_i386.deb

[sudo] password for furtherchan:

Selecting previously deselected package m4.

(Reading database ... 191676 files and directories currently installed.)

Unpacking m4 (from m4_1.4.8-1build1_i386.deb) ...

Setting up m4 (1.4.8-1build1) ...

Ignoring install-info called from maintainer script

The package m4 should be rebuild with new debhelper to get trigger support

Processing triggers for install-info ...

Processing triggers for man-db ...

furtherchan@ubuntu910:~/Downloads$sudo dpkg -i bison_13a2.3.dfsg-4build1_i386.deb

Selecting previously deselected package bison.

(Reading database ... 191725 files and directories currently installed.)

Unpacking bison (from bison_13a2.3.dfsg-4build1_i386.deb) ...

Setting up bison (1:2.3.dfsg-4build1) ...

update-alternatives: using /usr/bin/bison.yacc to provide /usr/bin/yacc (yacc) in auto mode.

Processing triggers for man-db ...

furtherchan@ubuntu910:~/Downloads$sudo dpkg -i build-essential_11.4_i386.deb

(Reading database ... 191752 files and directories currently installed.)

Preparing to replace build-essential 11.4 (using build-essential_11.4_i386.deb) ...

Unpacking replacement build-essential ...

Setting up build-essential (11.4) ...

furtherchan@ubuntu910:~/Downloads$sudo dpkg -i flex_2.5.33-10build1_i386.deb

Selecting previously deselected package flex.

(Reading database ... 191752 files and directories currently installed.)

Unpacking flex (from flex_2.5.33-10build1_i386.deb) ...

Setting up flex (2.5.33-10build1) ...

Ignoring install-info called from maintainer script

The package flex should be rebuild with new debhelper to get trigger support

Ignoring install-info called from maintainer script

The package flex should be rebuild with new debhelper to get trigger support

Processing triggers for install-info ...

Processing triggers for man-db ...

^[[Afurtherchan@ubuntu910:~/Downloads$sudo dpkg -i patch_2.5.9-5_i386.deb

(Reading database ... 191775 files and directories currently installed.)

Preparing to replace patch 2.5.9-5 (using patch_2.5.9-5_i386.deb) ...

Unpacking replacement patch ...

Setting up patch (2.5.9-5) ...

Processing triggers for man-db ...

furtherchan@ubuntu910:~/Downloads$sudo dpkg –i libncurses5-dev_5.6+20071124-1ubuntu2_i386.deb

Selecting previously deselected package libncurses5-dev.

(Reading database ... 191775 files and directories currently installed.)

Unpacking libncurses5-dev (from libncurses5-dev_5.6+20071124-1ubuntu2_i386.deb) ...

dpkg: dependency problems prevent configuration of libncurses5-dev:

libncurses5-dev depends on libncurses5 (= 5.6+20071124-1ubuntu2); however:

Version of libncurses5 on system is 5.7+20090803-2ubuntu2.

#注釋:出錯,libncurses5在9.10上是5.7+20090803-2ubuntu2,不影響下面,暫且跳過

dpkg: error processing libncurses5-dev (--install):

dependency problems - leaving unconfigured

Processing triggers for man-db ...

Errors were encountered while processing:

libncurses5-dev

furtherchan@ubuntu910:~/Downloads$

furtherchan@ubuntu910:~/Downloads$sudo dpkg -i gcc-4.1_4.1.2-23ubuntu3_i386.deb

(Reading database ... 192865 files and directories currently installed.)

Preparing to replace gcc-4.1 4.1.2-23ubuntu3 (using gcc-4.1_4.1.2-23ubuntu3_i386.deb) ...

Unpacking replacement gcc-4.1 ...

Setting up gcc-4.1 (4.1.2-23ubuntu3) ...

Processing triggers for man-db ...

furtherchan@ubuntu910:~/Downloads$sudo dpkg -i gcc-4.1-base_4.1.2-23ubuntu3_i386.deb

(Reading database ... 192865 files and directories currently installed.)

Preparing to replace gcc-4.1-base 4.1.2-23ubuntu3 (using gcc-4.1-base_4.1.2-23ubuntu3_i386.deb) ...

Unpacking replacement gcc-4.1-base ...

Setting up gcc-4.1-base (4.1.2-23ubuntu3) ...

furtherchan@ubuntu910:~/Downloads$sudo dpkg -i cpp-4.1_4.1.2-23ubuntu3_i386.deb

(Reading database ... 192865 files and directories currently installed.)

Preparing to replace cpp-4.1 4.1.2-23ubuntu3 (using cpp-4.1_4.1.2-23ubuntu3_i386.deb) ...

Unpacking replacement cpp-4.1 ...

Setting up cpp-4.1 (4.1.2-23ubuntu3) ...

Processing triggers for man-db ...

furtherchan@ubuntu910:~/Downloads$

furtherchan@ubuntu910:/usr/bin$ ls -l gcc

lrwxrwxrwx 1 root root 7 2009-11-16 21:27 gcc -> gcc-4.4

furtherchan@ubuntu910:/usr/bin$ mv gcc gcc_bck

mv: cannot move `gcc to `gcc_bck: Permission denied

furtherchan@ubuntu910:/usr/bin$sudo mv gcc gcc_bck

furtherchan@ubuntu910:/usr/bin$ ls -l gcc_bck

lrwxrwxrwx 1 root root 7 2009-11-16 21:27 gcc_bck -> gcc-4.4

furtherchan@ubuntu910:/usr/bin$ ls -l /usr/bin/gcc-4.1

-rwxr-xr-x 1 root root 198916 2008-10-26 21:12 /usr/bin/gcc-4.1

furtherchan@ubuntu910:/usr/bin$sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc

#注釋:修改gcc連結,連結至4.1版本

furtherchan@ubuntu910:/usr/bin$ ls -l gcc

lrwxrwxrwx 1 root root 16 2010-05-19 14:57 gcc -> /usr/bin/gcc-4.1

furtherchan@ubuntu910:/usr/bin$

furtherchan@ubuntu910:/usr/bin$ ls -la /bin/sh

lrwxrwxrwx 1 root root 4 2009-11-16 21:27/bin/sh -> dash

furtherchan@ubuntu910:/usr/bin$sudo dpkg-reconfigure dash

#注釋:在配置界面上選擇NO刪除dash

Removing `diversion of /bin/sh to /bin/sh.distrib by dash

Removing `diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash

furtherchan@ubuntu910:/usr/bin$

furtherchan@ubuntu910:~/Downloads$tar -zxvf crosstool-0.43.tar.gz

furtherchan@ubuntu910:~/Downloads$ cd crosstool-0.43/

furtherchan@ubuntu910:~/Downloads/crosstool-0.43$gedit demo-arm-softfloat.sh

#注釋:修改路徑

#set -ex

#TARBALLS_DIR=/home/furtherchan/Downloads

#RESULT_TOP=/home/furtherchan/Crosstool

furtherchan@ubuntu910:~/Downloads/crosstool-0.43$gedit gcc-3.4.5-glibc-2.3.6.dat

#注釋:修改名稱

# BINUTILS_DIR=binutils-2.15

# GCC_DIR=gcc-3.4.5

# GLIBC_DIR=glibc-2.3.6

# LINUX_DIR=linux-2.6.26.5

# LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0

# GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6

furtherchan@ubuntu910:~/Downloads/crosstool-0.43$./demo-arm-softfloat.sh

#注釋:執行2分鐘左右出錯,報too old ld,ld版本不對,查看版本:

furtherchan@ubuntu910:~/Downloads/crosstool-0.43$ld -v

GNU ld (GNU Binutils for Ubuntu) 2.20

#注釋:

#解決:解壓glibc-2.3.6.tar.bz2,修改glibc-2.3.6下的configure,修改完重新打包壓縮成tar.bz2

#####################################################################

# Found it, now check the version.

echo "$as_me:$LINENO: checking version of $AS" >&5

echo $ECHO_N "checking version of $AS... $ECHO_C" >&6

ac_prog_version=`$AS -v &1 | sed -n s/^.*GNU assembler.* /([0-9]*/.[0-9.]*/).*$//1/p`

case $ac_prog_version in

) ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;

2.2[0-9]*)

ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;

*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;

# Found it, now check the version.

echo "$as_me:$LINENO: checking version of $LD" >&5

echo $ECHO_N "checking version of $LD... $ECHO_C" >&6

ac_prog_version=`$LD --version 2>&1 | sed -n s/^.*GNU ld.* /([0-9][0-9]*/.[0-9.]*/).*$//1/p`

case $ac_prog_version in

) ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;

2.2[0-9]*)

ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;

*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;

重新運行./demo-arm-softfloat.sh

######################################################################

#注釋:以下省略N行

…….

…….

…….

+ test -f /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/lib/libmudflap.so.?

+ for DIR in $PREFIX/$TARGET/lib $PREFIX/$TARGET/lib64

+ test -f /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/lib64/libmudflap.so

+ test -f /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/lib64/libmudflap.so.?

+ cd /home/furtherchan/Downloads/crosstool-0.43

+ gcc fix-embedded-paths.c -o /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/fix-embedded-paths

fix-embedded-paths.c: In function 『testit』:

fix-embedded-paths.c:368: warning: initializer element is not constant

fix-embedded-paths.c:368: warning: (near initialization for 『all_tests[2]』)

+ echo Cross-toolchain build complete. Result in /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu.

Cross-toolchain build complete. Result in /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu.

+ exit 0

+ cd /home/furtherchan/Downloads/crosstool-0.43

+ sh testhello.sh

+ cd /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu

+ test ! -d tmp

+ mkdir tmp

+ cd tmp

+ test x != x

+ cat

+ /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc -static hello.c -o arm-softfloat-linux-gnu-hello-static

+ /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc hello.c -o arm-softfloat-linux-gnu-hello

+ test -x /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-g++

+ cat

+ /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-g++ -static hello2.cc -o arm-softfloat-linux-gnu-hello2-static

+ /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-g++ hello2.cc -o arm-softfloat-linux-gnu-hello2

+ echo testhello: C compiler can in fact build a trivial program.

testhello: C compiler can in fact build a trivial program.

+ test = 1

+ test = 1

+ test = 1

+ test 1 =

+ echo Done.

Done.

#注釋:編譯完成

furtherchan@ubuntu910:~/Downloads/crosstool-G9ho

#注釋:接下來加入環境變量

#修改/etc/bash.bashrc

export PATH=$PATH:/home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin:

furtherchan@ubuntu910:~/Crosstool$ ls

gcc-3.4.5-glibc-2.3.6gcc-3.4.5-glibc-2.3.6.tar.bz2

furtherchan@ubuntu910:~/Crosstool$ cd gcc-3.4.5-glibc-2.3.6/

furtherchan@ubuntu910:~/Crosstool/gcc-3.4.5-glibc-2.3.6$ ls

arm-softfloat-linux-gnu

furtherchan@ubuntu910:~/Crosstool/gcc-3.4.5-glibc-2.3.6$ cd arm-softfloat-linux-gnu/

furtherchan@ubuntu910:~/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu$ ls

arm-softfloat-linux-gnubinincludelibman

arm-softfloat-linux-gnu.crosstoolconfig.txtdistributedinfolibexectmp

furtherchan@ubuntu910:~/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu$ cd bin

furtherchan@ubuntu910:~/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin$ ls

arm-softfloat-linux-gnu-addr2linearm-softfloat-linux-gnu-gprof

arm-softfloat-linux-gnu-ararm-softfloat-linux-gnu-ld

arm-softfloat-linux-gnu-asarm-softfloat-linux-gnu-nm

arm-softfloat-linux-gnu-c++arm-softfloat-linux-gnu-objcopy

arm-softfloat-linux-gnu-c++filtarm-softfloat-linux-gnu-objdump

arm-softfloat-linux-gnu-cpparm-softfloat-linux-gnu-ranlib

arm-softfloat-linux-gnu-g++arm-softfloat-linux-gnu-readelf

arm-softfloat-linux-gnu-gccarm-softfloat-linux-gnu-size

arm-softfloat-linux-gnu-gcc-3.4.5arm-softfloat-linux-gnu-strings

arm-softfloat-linux-gnu-gccbugarm-softfloat-linux-gnu-strip

arm-softfloat-linux-gnu-gcovfix-embedded-paths

furtherchan@ubuntu910:~/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin$

furtherchan@ubuntu910:~/c/test$arm-softfloat-linux-gnu-gcc -v

Reading specs from /home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/lib/gcc/arm-softfloat-linux-gnu/3.4.5/specs

Configured with: /home/furtherchan/Downloads/crosstool-0.43/build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-softfloat-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu --with-float=soft --with-headers=/home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/include --with-local-prefix=/home/furtherchan/Crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long

Thread model: posix

gcc version 3.4.5

furtherchan@ubuntu910:~/c/test$

furtherchan@ubuntu910:~/c/test$arm-softfloat-linux-gnu-gcc -o test test.c

furtherchan@ubuntu910:~/c/test$file test

test: ELF 32-bit LSB executable,ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped

#注釋:文件格式已是ARM

furtherchan@ubuntu910:~/c/test$

相關焦點

  • CMake設置arm-linux-gcc交叉編譯器
    主機:Ubuntu10.04交叉編譯器:EABI-4.3.3本文引用地址:http://www.eepw.com.cn/article/201611/319327.htmCMake
  • Ubuntu配置安裝ARM Linux交叉編譯環境完整流程
    所以來重新安裝配置arm linux交叉編譯環境。順便記下.....1.虛擬機安裝ubuntu9.10,這個很簡單了不需累述了,安裝前vmware會讓你選擇劃分多大的硬碟,其實這個並不會是真的立即分離出那麼大的空間出來,即使你目前只剩下5g,你也可以要求劃分30g,你指定的只是一個上限值,最好設置大一點,以免以後不夠用又重新配置。
  • 了解Linux安裝ARM交叉編譯器的步驟
    打開APP 了解Linux安裝ARM交叉編譯器的步驟 發表於 2019-04-26 16:12:53 安裝交叉編譯環境
  • 帶你閱讀linux內核源碼:通俗講解編譯器、交叉編譯器和大小端
    因為早期的嵌入式硬體(比如)arm的性能較低,不適合在上面進行程序編譯這種耗費cpu的任務,所以,交叉編譯器應用而生了:我們在pc機上(pc機是x86架構)安裝arm的交叉編譯器,並(在pc機上)編譯出能在arm體系上運行的二進位代碼,這就是交叉編譯器所做的事情。
  • Linux 系統下ARM Linux交叉編譯環境crosstool工具
    cross-2.95.3.tar.bz2一般是交叉編譯2.4的linux內核的,而arm-linux-gcc-3.3.2.tar.bz2一般是交叉編譯2.6版本的內核的。二、自己動手慢慢編譯。這個方法是最麻煩的,需要下載很多源文件,步驟多比較繁瑣,成功率不高,極其容易出錯,即使是經驗豐富程式設計師,自己編譯一套完整的工具鏈也是很難成功的。
  • 在CentOS下用cross-ng建立arm-linux交叉編譯環境
    -1.10.2./crosstool-ng-1.9.0/samples/arm-unknown-linux-gnueabi /* ./crosstool-install/bin/ct-ng menuconfig此時會出現crosstool-ng的配置窗口,針對armv4t體系架構,開始對其進行修改配置:1、已下載好的源碼包路徑和交叉編譯器的安裝路徑。
  • 環信謝雅傑:Ubuntu實現樹莓派交叉編譯
    有時是因為目的平臺上不允許或不能夠安裝所需要的編譯器,而又需要這個編譯器的某些特徵;有時是因為目的平臺上的資源貧乏,無法運行所需要的編譯器;有時又是因為目的平臺還沒有建立,連作業系統都沒有,根本談不上運行什麼編譯器。
  • Ubuntu 16.04 LTS-嵌入式交叉編譯環境arm-linux-gcc搭建過程圖解
    前言首先簡單介紹一下,所謂的搭建交叉編譯環境,即安裝、配置交叉編譯工具鏈。在該環境下編譯出嵌入式Linux系統所需的作業系統、應用程式等,然後再上傳到目標機上。交叉編譯工具鏈是為了編譯、連結、處理和調試跨平臺體系結構的程序代碼。
  • ARM和Linux交叉開發環境的搭建過程
    摘要:交叉開發環境是嵌入式Linux開發的基礎.後續的開發過程幾乎都是基於此環境的。而ARM作為一種高性能、低成本的嵌入式RISC微處理器。已成為應用最廣泛的嵌入式處理器。本文內容包括基於32位ARM920T核「GEC2410」開發板的硬體結構和嵌入式Linux交叉開發環境的概念和配置.開發工具的使用以及交叉調試器製作的方法。
  • ARM編譯器介紹
    U-BOOT是一個LINUX下的工程,在編譯之前必須已經安裝對應體系結構的交叉編譯環境,這裡只針對ARM,編譯器系列軟體為arm-linux-*。>cpu     平臺依賴  存放CPU相關的目錄文件          例如:mpc8xx、ppc4xx、          arm720t、arm920t、 xscale、i386等目錄lib_ppc    平臺依賴  存放對PowerPC體系結構通用的文件,          主要用於實現PowerPC平臺通用的函數lib_arm
  • 如何在Linux系統中手動安裝arm-linux-gcc交叉編譯工具
    嵌入式開發少不了arm開發平臺。要編譯出能在arm平臺上運行的程序,必須使用交叉編譯工具arm-linux-gcc、arm-linux-ld、arm-linux-objcopy、arm-linux-objdump等。arm-linux-gcc是幹什麼的?gcc是linux系統下面用來將代碼編譯成一個可執行程序的手段。
  • Ubuntu12.10 使用JLink連接開發板用arm-gdb調試ARM程序
    Part1 環境搭建和工具安裝1.1 設置交叉編譯環境安裝相關的編譯工具:sudo apt-get install  build-essential gcc-arm-linux-gnueabi這裡我使用的是ubuntu系統源中含有的gcc-arm-linux-gnueabi系列工具
  • 建立ARM平臺上的交叉調試器gdb和gdbserver
    本文引用地址:http://www.eepw.com.cn/article/201611/316783.htm--target指定編譯後的文件針對的是什麼目標板,一般設置為交叉編譯器的前綴,比如--target=arm-linux, --target=mips-linux,--target=armv5-linux-uclibc, --target的預設值為
  • 基於x86和arm體系結構的linux內核編譯和升級
    一、基於PC機x86體系結構的升級(ubuntu10.04為例)1、解壓源碼,進入目錄2、生成.config文件,從/boot目錄下拷貝當前系統的配置文件(config-內核版本號),或者從源碼目錄路徑arch/x86/configs/i386_defconfig生成配置文件
  • ARM Linux根文件系統Root Filesystem的製作
    = /usr/local/arm/3.4.1/bin/arm-linux-當然CROSS_COMPILE由你自己的編譯器位置決定,然後# make menuconfig# make# make install注意配置的時候把一些uCLinux Only的東西去掉,不然會錯;配置的時候還可以修改安裝位置,默認是在Busybox下的
  • 乾貨| 教你在Win10的ubuntu子系統下編譯micropython
    然後就可以在應用商店中,通過搜索Linux或者ubuntu,找到ubuntu應用。注意現在應用商店裡ubuntu有兩個版本,分別是16.04和18.04。 這兩個版本都是長期伺服器版,但是我們需要選擇第一個,也就是16.04版本,因為目前gcc-arm編譯器還沒有支持18.04,使用18.04版本就需要自己手工安裝編譯器,比較麻煩。
  • Burst 編譯器,讓Arm 架構中的Unity 項目性能最大化
    Unity 開發者們利用起Arm Neon 指令集,在安卓設備上,Arm 架構下的Unity 項目可藉助Burst 編譯器提高性能。這兩種全新的硬體則由新的Arm 架構編譯器技術——Burst 來補足。在開發遊戲時,Burst 編譯器會將遊戲優化後轉譯為高效的二進位文件,讓遊戲能最大限度地利用起Arm 架構的性能。
  • 樹莓派 Ubuntu 64 位系統玩家體驗版
    Ubuntu 的 arm64 版本可不好找,不像 Debian 有一個健壯的 arm4 移植版,所以我找了很久,找到了一個15.10(沒辦法,只能這樣了),對於 15.10 官方不給支持了(畢竟不是LTS)。