1. 程式人生 > 實用技巧 >crosstool-ng編譯交叉工具鏈【轉】

crosstool-ng編譯交叉工具鏈【轉】

轉自:https://www.cnblogs.com/kele-dad/p/6697155.html?utm_source=itdadao&utm_medium=referral

一、準備工作

1. 建立工作資料夾

2.下載crosstool-ng

1 git clone https://github.com/crosstool-ng/crosstool-ng

crosstool-ng的環境需要libncurse5-dev

1 sudo apt-getinstall libncurse5-dev

3.安裝

1 安裝autoconf:  sudo apt-
getinstall autoconf<br>進入crosstool-ng目錄,執行./bootstrap,生成 configure 執行檔案<br><br>檢查安裝環境,報什麼錯,就安裝什麼軟體:
./configure --prefix=`pwd`/crosstool

需要的軟體有:sudo apt-get install gperf bison flex texinfo help2man gawk

執行命令 make
執行命令 make instal
export PATH="${PATH}:`pwd`/crosstool/bin"

二、編譯鏈製作

1.根目錄下建立三個資料夾

mkdir src x-tools crosstool

進入crosstool目錄:

cd ~/.crosstool

1 執行:ct-ng list-samples

1 ct-ng show-arm-cortexa9_neon-linux-gnueabihf

1 ct-ng arm-cortexa9_neon-linux-gnueabihf

1 ct-ng menuconfig

  Target options --->   從datasheet中的 BLOCK DIAGRAM 中可以看到

*** Target optimisations ***
(armv7-a) Architecture level :指令集架構,exynos4412為armv7-a架構,-march=name
(cortex-a9) Emit assembly for CPU :CPU核心型別, -mcpu=name
(cortex-a9) Tune for CPU:對CPU的優化,具體可以檢視晶片手冊,-mtune=name

  這些引數都可以gcc裡面對應,man gcc然後查詢關鍵字即可

工具鏈的分類:http://blog.csdn.net/ccskyer/article/details/16864173

kernel下載:https://www.kernel.org/pub/linux/kernel/v4.x/

gcc-linaro下載:http://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/

其他工具下載:http://ftp.gnu.org/gnu/

執行編譯命令:ct-ng build,開始進行工具鏈的構建:

2. 編譯完成

1 ls ~/x-tools/arm-cortexa9_neon-linux-gnueabihf/

建立環境變數:

1 2 PATH=~/x-tools/arm-cortexa9_neon-linux-gnueabihf/bin:$PATH/ arm-cortexa9_neon-linux-gnueabihf-gcc -v

3.編譯核心

1 make ARCH=arm CROSS_COMPILE=arm-cortexa9_neon-linux-gnueabihf- exynos_defconfig

1 exynos_defconfig是核心自帶的配置檔案,具體目錄在 /arch/arm/config/ 目錄中
1 make ARCH=arm CROSS_COMPILE=arm-cortexa9_neon-linux-gnueabihf- zImage modules

三、報錯

1. build failed int step 'Retrieving needed toolchain components' tarballs'

  檢視log可知道,isl下載出錯,進行手動下載:http://isl.gforge.inria.fr/

  然後重新編譯。

gcc-linaro-6.3-2017.02.tar.xa:http://releases.linaro.org/components/toolchain/gcc-linaro/6.3-2017.02/