https://kkua.github.io/post/cross-compile-rust-to-aarch64/
不同ARM交叉編譯工具鏈區別
“arm生態發展與交叉編譯工具鏈選擇”一文對ARM交叉編譯工具鏈介紹得比較詳細,以下引用該文章“交叉編譯鏈選擇”部分內容,更多詳細介紹請查看原文
免費版目前有三大主流工具商提供,第一是GNU(提供源碼,自行編譯制作),第二是****Codesourcery,第三是Linora。
收費版有ARM原廠提供的armcc、IAR提供的編譯器等等,因為這些價格都比較昂貴,不適合學習用戶使用,所以不做講述。
arm-none-linux-gnueabi-gcc:是 Codesourcery 公司(目前已經被Mentor收購)基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARM(32位)系統中所有環節的代碼,包括裸機程序、u-boot、Linux kernel、filesystem和App應用程序。
arm-linux-gnueabihf-gcc:是由 Linaro 公司基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARM(32位)系統中所有環節的代碼,包括裸機程序、u-boot、Linux kernel、filesystem和App應用程序。
aarch64-linux-gnu-gcc:是由 Linaro 公司基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARMv8 64位目標中的裸機程序、u-boot、Linux kernel、filesystem和App應用程序。
arm-none-elf-gcc:是 Codesourcery 公司(目前已經被Mentor收購)基於GCC推出的的ARM交叉編譯工具。可用於交叉編譯ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。
arm-none-eabi-gcc:是 GNU 推出的的ARM交叉編譯工具。可用於交叉編譯ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。
安裝交叉編譯工具鏈
-
訪問Linaro官網下載最新的適合我們機器的交叉工具鏈版本,由於我使用的是Windows所以選擇下載mingw32版本
-
解壓交叉編譯工具鏈到合適的位置
-
設置環境變量。把工具鏈bin目錄的路徑加入path環境變量
配置Rust環境
- 運行命令
rustup target add aarch64-unknown-linux-gnu
,添加aarch64-unknown-linux-gnu
rust toolchain到系統 - 修改cargo的
config
文件,配置新的目標架構
|
|
- 最后
cargo build
時需要添加參數--target aarch64-unknown-linux-gnu
。若是想要省略該參數則需要對config
作如下的修改,以改變默認的構建目標
|
|
- 另外,也可以給
build --target aarch64-unknown-linux-gnu
命令設置別名從而縮短構建命令。比如按下面的方式修改config
文件后,就可以使用cargo build_aarch64
來構建程序了
|
|
至此,我們就得到了適用於aarch64-unknown-linux環境的二進制可執行目標文件