首页 > 代码库 > crosstool-ng编译交叉工具链

crosstool-ng编译交叉工具链

一、准备工作

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/

crosstool-ng编译交叉工具链