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编译交叉工具链的更多相关文章
- X86上搭建交叉工具链,来给龙芯笔记本编译本地工具链(未完待续)
故事的背景是,我买了一台龙芯2F的笔记本来装B. 为什么说是装B呢?因为不但操作系统是Linux,而且CPU还是龙芯的. 一般人有这么酷的装备吗?简直是装B大圣啊. 这里一定要申明一点,本人不是IT技 ...
- FriendlyARM交叉工具链以及编译第一个arm9应用
不记录什么都会忘光!!!这两天又要用到开发板来做项目,可是好久没有碰了,最近一直在搞上层的东东,对rails和前端感兴趣,我这是不要毕业的节奏了吗?好吧,既然什么都忘光掉了,那就干脆来个痛快,重新装机 ...
- 【嵌入式】使用Cross Toolchain构建交叉工具链
Preface 前面编译linux内核的时候,用各种cross版本都不行啊,真是纠结,于是就想着自己也要会编译交叉工具的方法,然后各种尝试,各种问题啊,最后还是没解决(还有其它事情),步骤我都走熟了, ...
- 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...
- X86给龙芯笔记本编译本地工具链(未完待续)
我买了一台龙芯2F的笔记本来当玩具. 买回来发现,这台笔记本上没法安装软件,因为既没有软件仓库,也没有GCC. 因此需要构建交叉工具链和构建本地工具链. 下面是我研究如何搞定着一切的笔记. 工具链组件 ...
- linux driver ------ 交叉工具链(cross toolchain)
在 ARM Linux 的开发中,人们趋向于使用 Linaro(http://www.linaro.org/)工具链团队维护的 ARM 工具链,它以每月一次的形式发布新的版本,编译好的可执行文件可以网 ...
- 交叉工具链和makefile
交叉工具链: arm-linux-gcc:交叉编译器 arm-linux-ld:交叉连接器 arm-linux-readelf:交叉ELF文件工具 arm-linux-objdump:交叉反汇编器 a ...
- gcc 交叉工具链中工具使用(arm-linux-xxx)
在Ubuntu系统中使用 gcc 系列工具是在PC机上使用 arm-linux-gcc 编译的目标 是在 arm CPU上使用 一.安装交叉编译工具链 1. 编译工具怎么获取 1)从官网 http:/ ...
- ARM裸机开发之交叉工具链和MakeFile工程管理
一.交叉工具链 嵌入式Linux开发采用交叉开发,简单来说就是在宿主机(PC机)上面编译出能够在其他硬件平台上面运行的程序.在这个过程中,需要用到许多的交叉工具,这些交叉工具的集合就叫做交叉工具链.下 ...
随机推荐
- 万物互联之~RPC专栏
3.RPC引入 上篇回顾:万物互联之~深入篇 Code:https://github.com/lotapp/BaseCode/tree/master/python/6.net/6.rpc/ 其他专栏最 ...
- vue2.0项目实战(5)vuex快速入门
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 ...
- 使用jquery.pjax实现SPA单页面应用
前面文章介绍了前端路由简单实现和Pjax入门方面的文章,今天来分享一个单页面应用神器jquery.pjax.js. HTML 我们准备一个加载div#loading,默认隐藏,ajax请求的时候才显示 ...
- vue.js自定义组件directives
自定义指令:以v开头,如:v-mybind. <input v-mybind /> directives:{ mybind:{ bind:function (el) { el.value ...
- Freemarker 的 Eclipse 插件 安装
clipse版本(目前最新oxygen) 如果你的eclipse版本为Oxygen "Help" ---> "Eclipse Marketplace..." ...
- re-download dependencies and 无法下载jar 的解决
Re-download dependencies and sync project (requires network) 其实就是修改gradle 的path 路径:
- C++ vector的运用
C++ vector 用法(#include <vector>) 标准库Vector类型 使用需要的头文件: #include <vector> Vector:Vector 是 ...
- sping入门
SpringMVC 1.RequestMapping 处理地址映射请求 参数: value, produces, method, params, headers value:指定请求的实际地址 1.最 ...
- CentOS上手工部署kubernetes集群
本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...
- Docker 概述
Docker 是一个开源的应用容器引擎 ,让开发者可以打包他们的应用及依赖环境到一个可移植的容器中,然后发布到任何运行有Docker引擎的机器上. 让大家可以随心所欲地使用软件而又不会深陷到环境配置中 ...