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...
分享到:
相关推荐
嵌入式开发Linux交叉编译环境建立,通俗易懂,容易上手
在Linux嵌入式开发中,为了在高性能的PC上构建适用于目标嵌入式设备的软件,我们需要建立一个交叉编译环境。这个环境包括一套编译器、链接器以及libc库,允许在不同架构之间进行编译。本文将基于2.4内核的Linux系统...
在Linux嵌入式开发中,建立交叉编译环境是一个至关重要的步骤,因为它允许开发者在功能强大的主机系统上构建适用于目标嵌入式设备的代码。交叉编译环境包括一系列工具,如编译器、链接器以及libc库,这些工具都是...
这里主要介绍如何建立交叉编译环境,因为嵌入式设备通常使用与开发主机不同的处理器架构,所以需要在主机上使用交叉编译工具链来生成能在目标设备上运行的代码。 首先,嵌入式开发通常基于Linux操作系统,因为Linux...
【建立交叉编译环境】 建立面向ARM的交叉编译环境涉及多个步骤: 1. **准备工作**:首先确定开发环境,比如本文中提到的宿主机是运行Debian 4.0的PC,目标板采用的是ARM9处理器(如Samsung S3C2410)。下载必要的...
==怎样为Linux内核打补丁.pdf ==自己实验建立交叉编译工具链.pdf ==交叉编译场景(arm-linux)分析.pdf ==如何为嵌入式开发建立交叉编译环境.pdf ==Ubuntu 9.10上建立ARM-Linux交叉编译环境.pdf
这篇文档将详细阐述如何搭建一个嵌入式开发的交叉编译环境,主要涉及的步骤包括选择合适的软件版本、建立工作目录、配置环境变量、编译各个组件,以及最终构建完整的工具链。 首先,你需要确定所使用的软件版本。...
建立交叉编译环境 启动代码Bootloader的实现/移植 kernel的配置/移植/编译 根文件系统Crbmfs的实现
在嵌入式开发领域,搭建一个稳定可靠的交叉编译环境对于开发过程至关重要。Ubuntu 14.04作为一款稳定和广泛使用的Linux发行版,常被嵌入式开发者选作开发环境的基础。交叉编译环境使得开发者可以在一个与目标嵌入式...
在压缩包中提供的"如何为嵌入式开发建立交叉编译环境.doc"文档,详细介绍了建立交叉编译环境的步骤和常见问题,而"www.pudn.com.txt"可能是指向更多资源和讨论的链接,可以作为进一步学习的参考。 总之,建立ARM ...
交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执行的程序代码不是在本...在裁减和定制Linux运用于你的嵌入式系统之前,通常你都要在你的强大的pc机(主机)上建立一个用于目标机的交叉编译环境。
构建嵌入式Linux交叉编译环境是一项复杂但至关重要的工作,它为后续的嵌入式Linux开发奠定了坚实的基础。通过按照上述步骤逐步实施,并注意各组件间的兼容性和目标架构的特殊需求,可以成功构建出稳定可靠的交叉编译...
该平台通常包括嵌入式Linux操作系统、交叉编译环境、开发工具和目标板等组件。嵌入式Linux开发平台的主要特点是跨平台移植性强、灵活性高、开发效率高、成本低等。 嵌入式Linux开发流程: 嵌入式Linux开发流程可以...
编译 binutils 是建立交叉编译环境的重要步骤之一。 ##### 4. 建立初始编译器 (bootstrapgcc) 构建初始的 GCC 编译器是为了后续能够编译 glibc。 ##### 5. 建立 C 库 (glibc) Glibc 是 Linux 系统中最常用的 C ...