一、准备工作

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编译交叉工具链的更多相关文章

  1. X86上搭建交叉工具链,来给龙芯笔记本编译本地工具链(未完待续)

    故事的背景是,我买了一台龙芯2F的笔记本来装B. 为什么说是装B呢?因为不但操作系统是Linux,而且CPU还是龙芯的. 一般人有这么酷的装备吗?简直是装B大圣啊. 这里一定要申明一点,本人不是IT技 ...

  2. FriendlyARM交叉工具链以及编译第一个arm9应用

    不记录什么都会忘光!!!这两天又要用到开发板来做项目,可是好久没有碰了,最近一直在搞上层的东东,对rails和前端感兴趣,我这是不要毕业的节奏了吗?好吧,既然什么都忘光掉了,那就干脆来个痛快,重新装机 ...

  3. 【嵌入式】使用Cross Toolchain构建交叉工具链

    Preface 前面编译linux内核的时候,用各种cross版本都不行啊,真是纠结,于是就想着自己也要会编译交叉工具的方法,然后各种尝试,各种问题啊,最后还是没解决(还有其它事情),步骤我都走熟了, ...

  4. 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...

  5. X86给龙芯笔记本编译本地工具链(未完待续)

    我买了一台龙芯2F的笔记本来当玩具. 买回来发现,这台笔记本上没法安装软件,因为既没有软件仓库,也没有GCC. 因此需要构建交叉工具链和构建本地工具链. 下面是我研究如何搞定着一切的笔记. 工具链组件 ...

  6. linux driver ------ 交叉工具链(cross toolchain)

    在 ARM Linux 的开发中,人们趋向于使用 Linaro(http://www.linaro.org/)工具链团队维护的 ARM 工具链,它以每月一次的形式发布新的版本,编译好的可执行文件可以网 ...

  7. 交叉工具链和makefile

    交叉工具链: arm-linux-gcc:交叉编译器 arm-linux-ld:交叉连接器 arm-linux-readelf:交叉ELF文件工具 arm-linux-objdump:交叉反汇编器 a ...

  8. gcc 交叉工具链中工具使用(arm-linux-xxx)

    在Ubuntu系统中使用 gcc 系列工具是在PC机上使用 arm-linux-gcc 编译的目标 是在 arm CPU上使用 一.安装交叉编译工具链 1. 编译工具怎么获取 1)从官网 http:/ ...

  9. ARM裸机开发之交叉工具链和MakeFile工程管理

    一.交叉工具链 嵌入式Linux开发采用交叉开发,简单来说就是在宿主机(PC机)上面编译出能够在其他硬件平台上面运行的程序.在这个过程中,需要用到许多的交叉工具,这些交叉工具的集合就叫做交叉工具链.下 ...

随机推荐

  1. poj 1733 Parity game(带权并查集+离散化)

    题目链接:http://poj.org/problem?id=1733 题目大意:有一个很长很长含有01的字符串,长度可达1000000000,首先告诉你字符串的长度n,再给一个m,表示给你m条信息, ...

  2. python爬虫解析库学习

    一.xpath库使用: 1.基本规则: 2.将文件转为HTML对象: html = etree.parse('./test.html', etree.HTMLParser()) result = et ...

  3. Vim保存时权限不足

    保存时权限不足,由于打开时忘记在命令前添加sudo.我们并不需要放弃修改,从新以root权限打开 解决方案 命令模式使用:w !sudo tee %提权,保存

  4. LOJ#2541 猎人杀

    解:step1:猎人死了之后不下台,而是继续开枪,这样分母不变...... 然后容斥,枚举猎人集合s,钦定他们在1之后死.定义打到1的时候结束,枚举游戏在i轮时结束. 发现式子是一个1 + x + x ...

  5. 第十一节、Harris角点检测原理(附源码)

    OpenCV可以检测图像的主要特征,然后提取这些特征.使其成为图像描述符,这类似于人的眼睛和大脑.这些图像特征可作为图像搜索的数据库.此外,人们可以利用这些关键点将图像拼接起来,组成一个更大的图像,比 ...

  6. 第五节,Neural Networks and Deep Learning 一书小节(中)

    在这一节,我们对上一个程序(Network1.py)进行了优化 3.改进神经网络的学习方法 (1)交叉熵代价函数的引入 Network1程序采用了S型神经元,S型神经元存在一个问题,当输出层神经元的输 ...

  7. SpringCloud第二弹(高可用Eureka+Ribbon负载均衡)

    先建立父工程 .. ..一路next 搭建注册中心(需要建立三个工程,端口不一样) .. .. .. 修改入口类 package com.cloud.eurekaserver1111; import ...

  8. TODO java疑问

    TODOjava 疑惑-关于方法调用的参数是基本类型和引用类型的差别 class DataWrap { int a; int b; } public class ReferenceTransferTe ...

  9. Laravel 下生成验证码的类

    <?php namespace App\Tool\Validate; //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprs ...

  10. MVC知识点汇总

    一,MVC创建控制器,视图 1新建 ASP.NET MVC web应用程序项目,在Controllers文件夹下创建控制器,MVC 5 控制器,然后打开控制器,在所对应的控制器中会存在一个Action ...