1. 程式人生 > >ARM交叉編譯工具鏈的製作

ARM交叉編譯工具鏈的製作

今天是10.24程式設計師節日。獎勵一下自己,寫一篇實踐部落格。製作arm交叉編譯工具鏈。

目前比較新的製作交叉編譯工具鏈的軟體是crosstool-NG,非常方便,還可以編譯高版本的核心,比如4.16及以上。

Crosstool-NG的下載地址:http://crosstool-ng.github.io/download/,可以在該網址找到如何安裝crosstool-NG。

今天在這裡實際操作一把,linux環境是ubuntu16.04桌面版本。

按照官方指導,安裝crosstool-ng工具。

·第一步先進入原始碼目錄,執行./bootstrap,會檢測當前系統並生成configure檔案。

·第二步配置,./configure --prefix=/yourplace,引數--prefix可以指定crosstool安裝到什麼目錄下。如果configure中途遇到失敗,一般都是缺少一些元件軟體包,請自行安裝缺少的庫。

·第三步,編譯,直接make。

·第四步,安裝make install。最後匯出ct-ng的路徑到環境變數PATH就可以直接使用ct-ng命令了。

交叉編譯工具鏈的預配置

就像Linux核心一樣,它也有圖形配置介面。執行命令,ct-ng menuconfig進入配置介面。可以配置交叉編譯工具鏈生成路徑、所需原始碼(比如,核心原始碼)包下載路徑、選擇核心原始碼版本等。同樣,crosstool-ng也存在預設配置,通過命令ct-ng list-samples可以列出很多平臺的預設配置,包括arm、mips、x86等。我這裡選擇了arm-unknown-linux-gnueabi

執行命令 ct-ng arm-unknown-linux-gnueabi生成.confg檔案。準備進入編譯階段。如果這時需要更改配置,可以執行命令ct-ng menuconfig。

構建toolchain,只需要執行ct-ng build,就開始構建交叉編譯工具鏈。我使用預設配置,開始構建。這個過程比較耗時,它會下載需要的核心原始碼,庫原始碼等。構建好了之後,來試一試交叉編譯工具鏈能用不?

找了個一個linux4.16.4版本的核心原始碼,解壓後進入核心原始碼目錄。選擇了一個預設配置,生成配置make ARCH=arm vexpress_defconfig。緊接著直接make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi-,開始編譯核心。最終編譯結果如下:

[email protected]:~/work/linux-4.16.4$ file vmlinux

vmlinux: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, BuildID[sha1]=4b5796741a1f71fc7bbe62603ff7b17da5afc3ef, not stripped

說明製作的交叉編譯工具是可以正常使用的。

友情提示:我這裡選擇的核心配置是vexpress_defconfig,是為了下一篇文章qemu虛擬機器啟動linux系統做了鋪墊。