ARM Linux 交叉编译 工具链 制作攻略

发布者:devilcore最新更新时间:2016-06-17 来源: eefocus关键字:ARM  Linux  交叉编译  工具链 手机看文章 扫描二维码
随时随地手机看文章
制作之前确保你的机子上有如下几个工具:bison             flex            build-essential。

build-essential主要是用于提供GCC、GLIBC等必要的编译资源,一般做开发的人员机子上应该都会有的。如果没有,对于UBUNTU用 户:sudo apt-get install build-essential bison flex,其它用户自己看着办,!

1、从http://kegel.com/crosstool处下载crosstool-0.43.tar.gz并解开存于$HOME下。

假如你想要arm9tdmi上的工具链(其它工具链方法相同),进入crosstool-0.43目录,用文本编辑器打开demo-arm9tdmi.sh,内容如下:

#!/bin/sh
# This script has one line for each known working toolchain
# for this architecture.           Uncomment the one you want.
# Generated by generate-demo.pl from buildlogs/all.dats.txt

set -ex
TARBALLS_DIR=$HOME/downloads  //该行表示你即将下载的工具源码压缩包的存放目录!
RESULT_TOP=/opt/crosstool //该行表示将要生成的工具链的存放目录,最好改到有写权限的目录!
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"      //该行表示将要生成的工具链支持的语言的种类!
export GCC_LANGUAGES

# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest   //我选择本行!!!
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest

echo Done. //上面表示你要选工具链的版本号!"#"起注释功能!我们可以选择一行!

我把RESULT_TOP=/opt/crosstool改成RESULT_TOP=$HOME/toolchains,并在HOME目录下建立downloads 和toolchains两个目录,分别用于存放源码压缩包和将要生成的工具链。

打开crosstool-0.43目录下的arm9tdmi.dat文件,内容如下:

KERNELCONFIG=`pwd`/arm.config
TARGET=arm-9tdmi-linux-gnu
GCC_EXTRA_CONFIG="--with-cpu=arm9tdmi --enable-cxx-flags=-mcpu=arm9tdmi"
TARGET_CFLAGS="-O"

这个文件一般用于设置一些变量,一般不用改,用默认即可!

打开crosstool-0.43目录下的gcc-4.0.2-glibc-2.3.5-tls.dat文件,内容如下:

BINUTILS_DIR=binutils-2.16.1
GCC_DIR=gcc-4.0.2
GLIBC_DIR=glibc-2.3.5
LINUX_DIR=linux-2.6.15.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.5
GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread           --enable-kernel=2.4.18"

然后你就可以到网上去下载上面红色标记的几个源码包,注意对应的版本号,下载后存放在downloads目录下。注意,不需要解压!!你甚至可以去掉 LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0这一行(当然也就中需要下载这个包 了)!你可以到中国的镜像站点去下载这些包:

http://mirrors.shlug.org/                                     http://www.cn.kernel.org/pub/linux

http://www.cn.kernel.org/pub/software         ftp://ftp.cn.kernel.org/pub/linux

ftp://ftp.cn.kernel.org/pub/software

NOW,IT'S OK!

2、进入crosstool-0.43目录,输入./demo-arm9tdmi.sh,然后经过几个小时的编译,就可以在你的toolchains目录中看到你想要的工具链,头文件,库文件等东东了!你可以把工具链所在目录加到环境变量PATH中即可使用工具链了!

注意:crosstool-0.43目录下的PATCH目录中有各个工具链的补丁,如果在编译过程中有错误,可以在crosstool-0.43目录下 build目录中的解压后的源文件中打上补丁(我没打补丁也编译成功了,)。另外,如果不想每次编译时都有浪费时间的解压过程,可以在eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest 末尾处加--nounpack表示不解压(当然前提是你已经自行解压源码包到了对应的目录/build/gcc-4.0.2-glibc-2.3.5- tls/arm-9tdmi-linux-gnu里了,也可以在这时给其打补丁).
关键字:ARM  Linux  交叉编译  工具链 引用地址:ARM Linux 交叉编译 工具链 制作攻略

上一篇:构建ARM Linux交叉编译工具链
下一篇:arm gcc交叉编译工具链建立

推荐阅读最新更新时间:2024-03-16 14:57

一种CCD微米级圆钢光电测径仪的研究设计
  摘要: 提出了线阵CCD微米级非接触式圆钢光电测径仪的设计方案,并以ARM微处理器和单片机为核心实现了设计;解决了传统圆钢测径方法接触式测量的局限问题,具有结构简单、小型化、非接触、精度高等特点。实验结果表明,该系统实现了CCD非接触式圆钢光电测径,测量结果准确、精度高、稳定性好,且可直接方便地显示测量结果。    引言   在钢铁工业生产中传统的圆钢测径方法有很多,如利用尺寸工具抽样检测、电磁式接触测量等。用尺寸工具测量,精度不够且速度很慢;用电磁式测量是接触式测量,测量比较麻烦且精度和速度也难以得到保证。CCD电荷耦合器件广泛应用于图像扫描、非接触式尺寸检测、位移测定条形码读出等光电探测和光电成像领域,具有自扫描、精度
[测试测量]
一种CCD微米级圆钢光电测径仪的研究设计
全长5m的蛇形检查机器人“ Float Arm”,能用在哪些领域?
Hibot宣布,已通过第三方向Takahata Precision分配新资本,与东京电力科技公司签订资本和业务协议。 通过资本业务合作,Hibot将致力于在东京电力技术公司维护每个电力设施(如火力发电站、核电站、可再生能源厂)中使用机器人引入基础设施检查服务。此外,Takahata的新型3D光学传感器安装在Hibot新型蛇形操纵器“ Float Arm”的顶端。因此,可以通过高速获取高精度的三维数据来进行更详细的分析。此外,通过利用Takahata的网络,Hibot将不仅在日本而且在全球范围内全面扩展其RaaS(机器人服务)业务。 能代替“脏乱、危险、严重”的工作的机器人手臂“Float Arm” Hibot是一家机器人公司,
[机器人]
孙正义:计划在五年左右将芯片设计公司Arm重新上市
6月20日消息,据国外媒体报道,日本软银集团首席执行官孙正义周三称,计划在大约五年时间让总部位于英国的芯片设计公司Arm重新上市。 孙正义(资料图) 孙正义在软银年度股东大会上表示,Arm的设计将会用在更多半导体产品上,因为日用设备之间的互联程度日益增强。孙正义称,这只是物联网的开始。 软银2016年收购Arm时曾表示,让这家芯片设计公司退市可以让其专注于研发汽车、冰箱及其他日用设备的互联网连接。 孙正义此前还表示,ARM将达到阿里巴巴那样的规模。孙正义曾说过,“我已经帮助阿里巴巴达到那种规模。我有预感,ARM也将达到阿里那样的规模。” Arm公司成立于英国剑桥,主要出售芯片设计技术的授权。采用ARM技术知识产权的微处理器,即
[嵌入式]
孙正义:计划在五年左右将芯片设计公司<font color='red'>Arm</font>重新上市
基于ARM嵌入式智能控制器的设计与实现
0 背景 利用嵌入式技术,给工业系统安装智能控制器,对其进行在线监控和检测,就能及时发现故障并处理,从而不但保证工业系统始终处于良好的运行状态,同时也减轻值机维护人员的负担。面向工业应用的智能控制系统一般包括如下功能:多路模拟量和开关量的实时采集并显示、通过控制器或上位机进行启停等命令控制、工作状态采集并记录、数据上传、故障记录并报警、历史数据保存、定时开关机等,同时还应具有网络数据传输与控制和软件升级功能。传统的智能控制器一般多采用8位单片机实现,但随着实际功能复杂度的增加,尤其是实现大量数据采集和保存、彩色图形交互和网络通信等,单片机已很难满足实时控制的要求。因此,采用32位ARM处理器来实现的方案是较为理想的选择。 1
[单片机]
基于<font color='red'>ARM</font>嵌入式智能控制器的设计与实现
基于ARM微处理器的嵌入式以太网接口设计
    电子设备日趋网络化的背景下,作为目前广泛使用的以太网以及TCP/IP 协议已经成为事实上最常用的网络标准之一,它以高速、可靠、分层以及可扩充性使得它在各个领域的应用越来越灵活,很多情况下运用以太网和TCP/IP,能够简化结构和降低成本。但是,目前关于嵌入式以太网的设计方案不是很多,在这不多的方案中,大多是基于单片机或DSP 的。两者都存在要外扩很多外设的问题,并且前者速度太慢,后者成本又太高,这在一些对设备尺寸要求很小的场合是不行的。   本设计中,采用了基于ARM内核的微处理器S3C44BOX为基础的嵌入式系统与10MB 以太网控制芯片RTL8019AS 的接口电路和实现方法。   S3C44BOX芯片的介绍S3C4
[单片机]
基于<font color='red'>ARM</font>微处理器的嵌入式以太网接口设计
我和ARM的那些事儿3 beep之旅,最详细的ARM裸机工程设置
前言 在博客园里面我搜索了老半天,找相应的mini2440的裸机开发的程序,让我挺失望的就是居然没有人对做arm这块做详细的解答,到底如何去做,到底如何去配置,都不清楚,让我很纠结,那么我花了近一星期的时间,翻书、查资料、逛论坛,终于在自己一点一点地摸索下把整个流程都搞定了!而且谁说ARM硬件平台的同学不搞开源的,作为硬件狗,我们也是很乐意与大家分享我们的项目的! 个人设定目标 使用mini2440上的蜂鸣器进行呼叫。 准备 Mini2440开发板、keil 4 for arm Keil的配置 OK,首先我们要新建一个project Project- new uvision project 写完自己的项目名以后,要选择自
[单片机]
我和<font color='red'>ARM</font>的那些事儿3 beep之旅,最详细的<font color='red'>ARM</font>裸机工程设置
ARM笔记:U-Boot之移植 nand-flash 驱动
1、增加nand_flash.c 文件:cpu/arm920t/s3c24x0/nand_flash.c #include #if (CONFIG_COMMANDS & CFG_CMD_NAND) && !defined(CFG_NAND_LEGACY) #include #include DECLARE_GLOBAL_DATA_PTR; #define S3C2410_NFSTAT_READY (1 0) #define S3C2410_NFCONF_nFCE (1 11) #define S3C2440_NFSTAT_READY (1 0) #define S3C2440_NFCONT_nFCE (1 1) st
[单片机]
基于ARM9内核Processor外部NAND FLASH的控制实现
1 NAND FLASH NAND写回速度快、芯片面积小,特别是大容量使其优势明显。页是NAND中的基本存贮单元,一页一般为512 B(也有2 kB每页的large page NAND FLASH),多个页面组成块。不同存储器内的块内页面数不尽相同,通常以16页或32页比较常见。块容量计算公式比较简单,就是页面容量与块内页面数的乘积。根据FLASH Memory容量大小,不同存储器中的块、页大小可能不同,块内页面数也不同。例如:8 MB存储器,页大小常为512 B、块大小为8 kB,块内页面数为16。而2 MB的存储器的页大小为256 B、块大小为4 kB,块内页面数也是16。NAND存储器由多个块串行排列组成。实际上,NAND
[缓冲存储]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved