建立针对arm-linux的交叉编译环境

发布者:Asawen最新更新时间:2013-11-06 来源: eefocus关键字:arm  linux  交叉编译环境 手机看文章 扫描二维码
随时随地手机看文章
交叉编译环境介绍

交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执行的程序代码不是在本机编译生成,而是由另一台机器编译生成,一般把前者称为目标机,后者称为主机。采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行。

linux下的交叉编译环境重要包括以下几个部分:

针对目标系统的编译器gcc

针对目标系统的二进制工具binutils

目标系统的标准c库glibc

目标系统的linux内核头文件

交叉编译环境的建立步骤

下载源代码

下载包括binutils、gcc、glibc及linux内核的源代码(需要注意的是,glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致),并设定shell变量PREFIX指定可执行程序的安装路径。

编译binutils

首先运行configure文件,并使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,然后执行make install。

配置linux内核头文件

首先执行make mrproper进行清理工作,然后执行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)进行配置(注意,一定要在命令行中使用ARCH=arm指定cpu架构,因为缺省架构为主机的cpu架构),这一步需要根据目标机的实际情况进行详细的配置,笔者进行的实验中目标机为HP的ipaq-hp3630 PDA,因而设置system type为SA11X0,SA11X0 Implementations中选择Compaq iPAQ H3600/H3700。

配置完成之后,需要将内核头文件拷贝到安装目录: cp -dR include/asm-arm $PREFIX/arm-linux/include/asm cp -dR include/linux $PREFIX/arm-linux/include/linux

第一次编译gcc

首先运行configure文件,使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,并使用--disable-threads、--disable-shared、--enable-languages=c参数,然后执行make install。这一步将生成一个最简的gcc。由于编译整个gcc是需要目标机的glibc库的,它现在还不存在,因此需要首先生成一个最简的gcc,它只需要具备编译目标机glibc库的能力即可。

交叉编译glibc

这一步骤生成的代码是针对目标机cpu的,因此它属于一个交叉编译过程。该过程要用到linux内核头文件,默认路径为$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其内核头文件所在的include目录;或者,也可以在接下来要执行的configure命令中使用--with-headers参数指定linux内核头文件的实际路径。

configure的运行参数设置如下(因为是交叉编译,所以要将编译器变量CC设为arm-linux-gcc):

CC=arm-linux-gcc ./configure --prefix=$PREFIX/arm-linux --host=arm-linux --enable-add-ons

最后,按以上配置执行configure和make install,glibc的交叉编译过程就算完成了,这里需要指出的是,glibc的安装路径设置为$PREFIXARCH=arm/arm-linux,如果此处设置不当,第二次编译gcc时可能找不到glibc的头文件和库。

第二次编译gcc

运行configure,参数设置为--prefix=$PREFIX --target=arm-linux --enable-languages=c,c++。

运行make install。

到此为止整个交叉编译环境就完全生成了。

几点注意事项

第一点、在第一次编译gcc的时候可能会出现找不到stdio.h的错误,解决办法是修改gcc/config/arm/t-linux文件,在TARGET_LIBGCC2_CFLAGS变量的设定中增加-Dinhibit_libc和-D__gthr_posix_h。

第二点、对与2.3.2版本的glibc库,编译linuxthread/sysdeps/pthread/sigaction.c时可能出错,需要通过补丁glibc-2.3.2-arm.patch解决:执行patch -p1 < glibc-2.3.2-arm.patch

第三点、第二次编译gcc时可能会出现libc.so的错误,这是需要利用文本编辑器手动修改libc.so。

关键字:arm  linux  交叉编译环境 引用地址:建立针对arm-linux的交叉编译环境

上一篇:NXP针对高速数据采集应用推出LPC4370
下一篇:ARM互动在线平台上线 激励产业合作与创新

推荐阅读最新更新时间:2024-03-16 13:30

ucos在s3c2410上运行过程整体剖析之基础知识- ARM9芯片知识
阅读这些内容前,希望你对计算机有了一点简单的概念,最好学习过计算机组成原理并知道一些最基本的概念。如果你学习过51系列的单片机并且利用51系列的单片机做过一些开发,那看这些内容就很简单了。如果你没这些知识也没关系,以我的学习经历来看,可以给大家一个学习计算机组成原理的建议。你可以先大致学习一下计算机组成原理,学完之后一般会对计算机有一个大体的了解,计算机专业在开设这门课时一般会安排计算机组成原理实验,这个实验大家要好好去做,这样会打消你对计算机很神秘的认识。有了这些基础之后,建议大家去学51系列的单片机,在这个小型计算机上做一些开发,这样你就会对计算机组成原理有了更真实更深刻的认识。学习了51系列单片机后,你也对计算机语言有了进一
[单片机]
ARM中的CACHE机制
ARM cache架构由cache存储器和写缓冲器(write-buffer)组成,其中写缓冲器是CACHE按照FIFO原则向主存写的缓冲处理器。下图是ARM V5核的CACHE位置 Cache 位于MMU前面靠近CPU称为逻辑CACHE又叫虚拟Cache。CPU可以直接访问CACHE的数据,而ARM 11(ARMV6)的结构是CACHE 在MMU后面CPU访问CACHE要通过MMU地址转换 在DM6446的core用的是哈佛结构,即把CACHE分为8K的D-CACHE(数据CACHE)和16K的I-cache(指令CACHE) 一个完整的CACHE分为CACHE控制器和CACHE存储器 见下图: Davin
[单片机]
Linux内存管理学习2 —— head.S中的段页表的建立
平台 TQ2440 Qemu+vexpress-ca9 Linux-4.10.17 正文 继续分析head.S: 此时r2存放的是设备树镜像的物理起始地址,r8是物理内存的起始地址,r9是从CP15的C0中读到的cpu id,r10是与该cpu id匹配的proc_info_list的物理地址 TQ2440: r8: 0x3000_0000,r9: 0x41129200 vexpress: r8: 0x6000_0000,r9: 0x414FC091 8、第30行调用__create_page_tables建立段式页表。 下面是__create_page_tables的定义: 其中涉及到几个
[单片机]
<font color='red'>Linux</font>内存管理学习2 —— head.S中的段页表的建立
基于Linux的嵌入式车载导航系统的设计
1 前言 HMS30C7202 嵌入式 微处理器是目前性价比交优秀的芯片,由于其优良的性能用于替代早期的芯片,在车辆导航方面的开发应用有着广阔的应用前景。 在诸多的操作系统中,由于Windows CE 、Vxwork等操作系统都是商业化产品,其价格高昂、源代码封闭。另外,对于上层应用开发者而言,嵌入式系统需要的是一套高度简练、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。源码开放的 Linux 正好可以满足这些要求。由于嵌入式系统的应用多种多样,并且标准Linux操作系统比较庞大,因此,需要根据实际应用对标准Linux进行重新的移植、裁剪和配置,生成代码紧凑、代码量小的特定操作系统。 2 导航系统的硬件组成
[单片机]
基于<font color='red'>Linux</font>的嵌入式车载导航系统的设计
中国厂商将很快放弃ARM技术
英特尔CEO科再奇(Brian Krzanich)预计,中国的半导体合作伙伴将在未来几年内放弃ARM技术而转用英特尔的架构。目前,ARM技术被广泛应用于智能手机和平板电脑产品。 今年,英特尔已经与瑞芯微电子和展讯通信签订了合作协议,后者将利用英特尔技术为瞄准中国快速增长的消费者市场的廉价智能手机和平板电脑开发芯片。 展讯通信和瑞芯微电子专营易用性很高的总控智能手机和平板电脑平台。它们在设计芯片时通常使用的是英国ARM Holdings授权的技术。ARM是英特尔最主要的竞争对手。 虽然中国芯片厂商与英特尔签订的协议并未禁止它们继续开发基于ARM架构的芯片,但是科再奇相信,在过两三年,它们将只使用英特尔的架构。  
[单片机]
全面转型的Intel还能再造辉煌吗
日前Intel宣布以150多亿美元的价格收购全球最大的高级驾驶辅助系统(ADAS)供应商Mobileye以后。业界似乎对intel在无人驾驶中的布局充满了信心。自1968年成立以来,Intel创造了DRAM、PC处理器和服务器芯片等几个领域的辉煌。每一次的产业转型,Intel几乎都能抓住,并利用自己强大的制造和设计能力,成为其中的佼佼者。不过有一个领域例外,那就是苹果开创的智能手机时代。 由于对移动市场的反应缓慢和错误估计,Intel错失了黄金十年的移动市场,造就了ARM和高通等一众厂商的辉煌。但进入了最近两年,Intel又有了卷土重来之势。在砍掉移动产品线之后,Intel将目光聚焦到物联网、5G、人工智能和汽车电子等领域,通
[网络通信]
掌握核心科技,深圳无人机厂商研发MCU!
系统设计或整机制造企业意识到,若能在核心控制晶片或是处理晶片采用自家专有的技术,同时还能降低对供应商的依赖或是材料成本,将会是在市场上取得成功的重要--甚至是关键--因素。 越来越多的系统设计或整机制造企业意识到,要保证产品的创新或是独特性,必须要有自家独特的设计。如果是能够在核心的控制晶片或是处理晶片采用自家专有的技术,同时还能降低对供应商的依赖或是材料成本,这将会是在市场上取得成功的重要--甚至是关键--因素。在本文中,笔者很乐意来分享一个 无人机 市场上,一家方案公司自己设计开发 MCU 的故事,给大家一些启发。 在过去的一年中,玩具级无人机的出货成长逐渐放缓,在澄海(编按:位于中国广东的玩具产业大本营)众多玩具无人机厂
[嵌入式]
基于ARM和加速度传感器的电子画笔设计
随着计算机的普及,电子笔作为新兴的人机交互工具发展迅速。在国内,汉王公司在手写识别方面一直居领先地位,引领着国内电子笔的发展。国外则将笔迹与办公软件关联起来,建立了数字墨水的概念。2001年6月,爱立信宣布推出世界上第一支数字笔——Chat2penCHA-30。该产品充分利用了蓝牙(Bluetooth)无线技术和GPRS网络,可传输手写文本并与移动电话、计算机和互联网进行互动通信。虽然它的外观和书写方式与一支普通的笔相同,但Chatpen可以借助一种印在普通纸上几乎看不见的点模式“读”出它的位置。这些信息通过蓝牙和GPRS移动电话,消费者即可同时在纸上以数字方式书写。用户将发现自己不再仅限于基于文本的短消息或电子邮件,只要使用Ch
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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