一、准備工作
1. 建立工作文件夾

2.下載crosstool-ng
git clone https://github.com/crosstool-ng/crosstool-ng

crosstool-ng的環境需要libncurse5-dev
sudo apt-get install libncurse5-dev
3.安裝
安裝autoconf: sudo apt-get install autoconf
進入crosstool-ng目錄,執行./bootstrap,生成 configure 執行文件
檢查安裝環境,報什么錯,就安裝什么軟件:
./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
執行:ct-ng list-samples

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

ct-ng arm-cortexa9_neon-linux-gnueabihf

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. 編譯完成

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

建立環境變量:
PATH=~/x-tools/arm-cortexa9_neon-linux-gnueabihf/bin:$PATH/ arm-cortexa9_neon-linux-gnueabihf-gcc -v

3.編譯內核
make ARCH=arm CROSS_COMPILE=arm-cortexa9_neon-linux-gnueabihf- exynos_defconfig

exynos_defconfig是內核自帶的配置文件,具體目錄在 /arch/arm/config/ 目錄中
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/
