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 instalexport 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/

时间: 2024-09-30 14:31:13

crosstool-ng编译交叉工具链的相关文章

嵌入式交叉工具链编译

读者可能会有疑问,为什么要用交叉编译器?交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台 (X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统.这种方法在异平台移植和嵌入式开发时非常有用.相对与交叉编译,平常做的编译叫本地编译,也 就是在当前平台编译,编译得到的程序也是在本地执行.用来编译这种跨平台程序的编译器就

编译裸机程序以及交叉工具链

把链接器脚本led.lds.源文件led.S以及Makefile给出 1.arm-linux-gcc -g -c led.S -o led.o 编译不链接且包含调试信息 2.arm-linux-ld -Tled.lds -o led.elf led.o 使用链接器脚本led.lds来进行链接 3.arm-linux-objcopy -O binary led.elf led.bin 将elf格式转换为bin 4.将生成的.bin文件烧写到开发板. 交叉工具链 1.交叉编译器 arm-linux-

ARM-Linux交叉工具链制作

1. 首先从官方网站上下载crosstool-ng的源码包 http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.11.1.tar.bz2 2. 将此源码包解压缩并编译安装 tar jxvf crosstool-ng-1.11.1.tar.bz2 cd crosstool-ng--1.11.1 ./configure make sudo make install 注意:运行configure文件会提示一系列的工具没有安装

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

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发

ubuntu下stm32交叉工具链 构建过程1

说实话,这个过程将是十分折腾的过程,而且不一定成功,所以,我的很多朋友在听到我说要做这件事情的时候,都给我泼冷水. 但是,我还是想努力,因为这次我是下决心,非要反微软到底. 就算这个过程再难——我脑海里经常闪现起 勇敢的心 里 华伦士 最后受尽极性 仍然高喊 自由的情景. 我对自己说,也是激励自己:只有这样的人才有权利追求和获得自由. 这件事,难就难在我发现我光是为了获取一个可用的gcc编译器,在codesourcery codebench上下载下来都这么费劲. 我的网络速度相当快,但不知为什么

2.交叉工具链

2.交叉工具链 一.交叉工具链: 交叉工具链,其实他有两个含义,一个就是交叉工具,所谓的交叉工具就是运行的环境和编译的环境不是在一体的.就像我们现在,编译裸机程序是在pc机上面执行的.可我们运行程序是在开发板.链,就是很多的意思,就是一个工具的集合.在我们前面配置arm-linux-gcc的工具中.在/usr/local/arm/4.3.2/bin的目录下有很多编译工具.例如图1-1: 图1.-1 交叉工具链 下面我们来写一个简单的程序,用这些工具编译. Hello.c: #include <s

自己制作ARM-Linux交叉工具链

学习嵌入式嘛,就得自己多动手,多实践.入门的话,自己配置开发环境,移植内核这些.开发环境就不说了,移植内核首先就得编译内核.就得有编译器.由于ARM cpu的体系结构与x86不一样.通常的做法就是在 x86 开发平台使用ARM交叉编译器来编译内核,再移植到开发板上.制作交叉工具链是个仔细的活,既繁琐又有难度.网上推荐的做法是新手使用别人制作好的工具链,等以后经验多了,再来仔细研究这个.不知道为什么我就硬着头皮上了,结果花了一个星期还是倒腾出来了,算是有收获.所以这篇博文就简单记录一下,内容不涉及

[国嵌笔记][016][交叉工具链]

交叉工具链 1.交叉工具是编译在arm平台上运行程序的工具,交叉工具链是交叉工具的集合 2.file filename 通过file命令可以查看程序运行的平台等相关信息 3.交叉开发 1.在x86平台上产生其他平台上运行程序的模式叫做交叉开发 2.宿主机是产生嵌入式软件的平台,目标机是运行嵌入式软件的平台 常用的交叉工具 1.交叉编译器 arm-linux-gcc 相同之处 arm-linux-gcc file.c -o file 与gcc用法上一样 不同之处 gcc从 /usr/include

交叉工具链的搭建方法(测试成功)

之前安装了一个rehat6的linux系统,把交叉编译搭建给忽视了,结果在编译uboot的时候出现问题,显示找不到arm-linux-gcc.于是自己来搭建交  叉编译环境.出现好多错.先是解压时没在后边加 -C/,后是直接自己创建了个目录,把解压后的bin目录复制到自己创建的目录.还是出现问题.但  最后我还是成功了的,直接给出操作过程: **把arm-linux-gcc复制到linux任意目录,比如是study,建议是自己创建的工作目录,便于你之后删除该压缩包. #cd study #ls