(一)arm交叉編譯工具鏈准備


1。背景

    arm機器一般因為資源問題進行編譯會影響開發速度,而且很多時候因為資源不夠而無法完成編譯工作。因此,需要在執行機上進行交叉編譯,即使用x86或其他架構機器基於交叉編譯工具編譯出在arm上可以運行的程序。

2. 分類和說明

    從授權上,分為免費授權版和付費授權版。

    免費版目前有三大主流工具商提供,第一是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芯片程序。

    命名規則: https://www.veryarm.com/296.html

    交叉編譯工具鏈的命名規則為:arch [-vendor] [-os] [-(gnu)eabi]

    arch - 體系架構,如ARM,MIPS
    vendor - 工具鏈提供商
    os - 目標操作系統
    eabi - 嵌入式應用二進制接口(Embedded Application Binary Interface)

    找到一個下載地址(http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/),不會用。開始學怎么編。

3. 自己編譯交叉編譯器

    3.1 先准備本地環境,安裝必要的工具

    sudo apt-get install bison flex texinfo automake libtool cvs patch curl  subversion gawk cvsd gperf

其中:

bison和flex是用來生成語法和詞法分析器;

texinfo和man類似,用來讀取幫助文檔;

automake是幫助生成Makefile的工具;

libtool幫助在編譯過程中處理庫的依賴關系,自動搜索路徑;

cvs、cvsd和subversion是版本控制軟件,用於編譯過程中的源碼下載;

curl通過給定的網絡地址下載源碼的工具;

patch是用於給源碼打補丁的工具;

gawk是linux下用於文本處理和模式匹配的工具。

     3.2 獲取crosstool-NG的源碼

網站: http://crosstool-ng.github.io/
下載最新的版本:git clone https://github.com/crosstool-ng/crosstool-ng
3.3 安裝
    下載完成后執行 :
 ./bootstrap
 ./configure --prefix /opt/arm-linux-tool/crosstool-ng/
    會有libtool找不到的錯誤: 解決-》sudo apt install libtool-bin && libtool --version 
    之后執行make  
             make install
    進行安裝ct-ng
 
    安裝完成后配置環境變量,將ct-ng加入環境變量中
 
 從根目錄中的 amples/arm-unknown-linux-gnueabi拷貝出需要的配置文件到根目錄中 .configure
    執行ct-ng menuconfig進行配置,此部分可參考:  https://www.jianshu.com/p/a513590de6b8
    安裝需要下載大量文件,虛擬機實在扛不住,因此,,,,放棄了。。
    去找官方網站下載去
 
最終使用的下載地址:
https://developer.arm.com/open-source/gnu-toolchain/gnu-a/downloads
這里的原始文件是從linaro拿到的,地址如下: http://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabi
下載完成后放入虛擬機解壓,然后export添加環境變量,完成工具鏈配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM