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- get install libncurse5-dev
|
3.安裝
1 |
安裝autoconf: sudo apt- get install 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 中可以看到
(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/