http://www.ibm.com/developerworks/cn/linux/l-embcmpl/
在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。
<!-- START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters -->
<!-- END RESERVED FOR FUTURE USE INCLUDE FILES-->
随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。
在
裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环
境。这是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要由 binutils、gcc 和 glibc
几个部分组成。有时出于减小 libc 库大小的考虑,你也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和
newlib。建立一个交叉编译工具链是一个相当复杂的过程,如果你不想自己经历复杂的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载。
下面我们将以建立针对arm的交叉编译开发环境为例来解说整个过程,其他的体系结构与这个相类似,只要作一些对应的改动。我的开发环境是,宿主机 i386-redhat-7.2,目标机 arm。
这个过程如下
1. 下载源文件、补丁和建立编译的目录
2. 建立内核头文件
3. 建立二进制工具(binutils)
4. 建立初始编译器(bootstrap gcc)
5. 建立c库(glibc)
6. 建立全套编译器(full gcc)
下载源文件、补丁和建立编译的目录
1. 选定软件版本号
选
择软件版本号时,先看看glibc源代码中的INSTALL文件。那里列举了该版本的glibc编译时所需的binutils
和gcc的版本号。例如在 glibc-2.2.3/INSTALL 文件中推荐 gcc 用 2.95以上,binutils 用 2.10.1
以上版本。
我选的各个软件的版本是:
linux-2.4.21+rmk2
binutils-2.10.1
gcc-2.95.3
glibc-2.2.3
glibc-linuxthreads-2.2.3
如果你选的glibc的版本号低于2.2,你还要下载一个叫glibc-crypt的文件,例如glibc-crypt-2.1.tar.gz。
Linux 内核你可以从www.kernel.org 或它的镜像下载。
Binutils、
gcc和glibc你可以从FSF的FTP站点ftp://ftp.gun.org/gnu/ 或它的镜像去下载。
在编译glibc时,要用到 Linux 内核中的 include
目录的内核头文件。如果你发现有变量没有定义而导致编译失败,你就改变你的内核版本号。例如我开始用linux-2.4.25+vrs2,编译
glibc-2.2.3 时报 BUS_ISA 没定义,后来发现在 2.4.23 开始它的名字被改为
CTL_BUS_ISA。如果你没有完全的把握保证你改的内核改完全了,就不要动内核,而是把你的 Linux 内核的版本号降低或升高,来适应
glibc。
Gcc 的版本号,推荐用 gcc-2.95 以上的。太老的版本编译可能会出问题。Gcc-2.95.3 是一个比较稳定的版本,也是内核开发人员推荐用的一个 gcc 版本。
如果你发现无法编译过去,有可能是你选用的软件中有的加入了一些新的特性而其他所选软件不支持的原因,就相应降低该软件的版本号。例如我开始用 gcc-3.3.2,发现编译不过,报 as、ld 等版本太老,我就把 gcc 降为 2.95.3。
太新的版本大多没经过大量的测试,建议不要选用。
More...
分享到:
相关推荐
如何为 嵌入式开发 建立交叉编译环境 .doc
如何为linux嵌入式开发建立交叉编译环境(2.4内核)借鉴.pdf
如何为linux嵌入式开发建立交叉编译环境(2.4内核)[定义].pdf
嵌入式开发Linux交叉编译环境建立,通俗易懂,容易上手
基于ARM的嵌入式Linux的交叉编译环境的建立.pdf
==怎样为Linux内核打补丁.pdf ==自己实验建立交叉编译工具链.pdf ==交叉编译场景(arm-linux)分析.pdf ==如何为嵌入式开发建立交叉编译环境.pdf ==Ubuntu 9.10上建立ARM-Linux交叉编译环境.pdf
嵌入式开发交叉编译环境建立.ppt
建立交叉编译环境 启动代码Bootloader的实现/移植 kernel的配置/移植/编译 根文件系统Crbmfs的实现
嵌入式搭建环境的建立(交叉编译环境、QT图形界面开发环境的建立、QT4.5.3 QT/Embedded4.5.3安装移植)
Ubuntu 14.04 交叉编译环境的搭建,嵌入式开发环境的搭建。
交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执行的程序代码不是在本...在裁减和定制Linux运用于你的嵌入式系统之前,通常你都要在你的强大的pc机(主机)上建立一个用于目标机的交叉编译环境。
嵌入式Linux 开发平台简介 嵌入式Linux 开发流程 嵌入式Linux 开发环境的建立 NFS samba tftp 等等
在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。本文具体说明了嵌入式交叉编译环境的建立过程和具体的操作步骤,希望能够对各位朋友搭建对应的交叉编译环境...
基于Linux的嵌入式交叉编译环境的建立及实现.pdf
嵌入式开发建立交叉编译环境 对于初学习嵌入式开发的人很有价值
最近在尝试录播一些资料,下午跟一个朋友在网上讨论了嵌入式系统的交叉编译及环境建立的一些问题,我现在就谈谈这方面的内容,与大家分享。
本文将介绍linux操作系统交叉编译环境建立方法
移植前需要在宿主机上建立如图所示的ARM的交叉编译环境,建立交叉编译环境的目的在于使用普通的PC作为宿主机来调试目标开发板。建立ARM的交叉编译环境主要用到的开发工具有:binutils、gcc、glibc。 图 交叉...