制作交叉编译环境的几种方法及步骤(精)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– – – – – – BINUTILS_VERSION=2.16 GCC_VERSION=3.4.3 GCCCORE_VERSION=3.4.3 LINUX_VERSION=2.4.21 GLIBC_VERSION=2.3.5 GLIBCTHREADS_VERSION=2.3.5
8.2自己制作交叉编译器
下面将介绍如何通过编写bash shell脚本的方 法,利用网上的开源代码一步步地创建了交叉 编译器。
8.2.2 自己制作交叉编译器
因为Linux内核版本多,不同的版本存在不同的bug, 加之众多版本的工具链也存在不同的bug,这些bug 针对不同的硬件(比如CPU类型等),需要多方测 试,寻找合适的补丁程序。 以下是已选定的构建交叉编译环境的工具链版本:
8.1 交叉编译基础知识
需要交叉编译的原因: 首先,在项目的起始阶段,目标平台尚未 建立,因此需要做交叉编译,以生成我们 所需要的Bootloader以及kernel(因为 Bootloader和kernel的源码需要经过交叉编 译后才可以在目标平台上运行); 其次,当目标平台能启动之后,由于目标 平台上资源的限制,当我们编译大型程序 时,依然可能需要用到交叉编译。
安装目录:/usr/local/bin/arm-elf-xxx /usr/local/arm-linux/bin/arm-linux-xxx /usr/local/arm-uclinux-tool/bin/armuclinux-xxx
8.2 自己制作嵌入式交叉编译器
对于交叉编译器,可以自己生成,也可以从网 上下载。区别在于从网上下载的非常简单方便, 但很难找到适合自己所选择的平台。
8.2自己制作交叉编译器
步骤:
– 1、创建编译环境;
– 2、创建binutils(会创建arm-linux-ld等工具);
– 3、创建一个交叉编译版本的gcc(即gcccore这步只能编译C程 序,而不能编译C++程序) ; – 4、创建一个交叉编译版本的glibc(即glibcheader); – 5、创建一个交叉编译版本的gdb (会创建arm-linux-gdb等工 具); – 6、重新创建gcc(可以编译C++程序); – 7、重新创建glibc。
8.2 为嵌入式开发建立 交叉编译环境
8.2 为嵌入式开发建立交叉编译环境
建立交叉编译环境是进行Linux内核移植的第 一步。 目前常用的交叉开发环境主要有开放和商业两 种类型。 开放的交叉开发环境的典型代表是GNU工具 链,目前已能够支持x86、ARM、PowerPC等 多种处理器。 商业的交叉开发环境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit等。
binutils工具包:包括连接器、汇编器以及其 他用于目标文件和档案的工具,如as汇编器, ld连接器等。 gcc工具包:工具链的主角,包括c编译器gcc、 c++编译器g++等。 glibc库:提供系统调用的基本函数的C库, 比如,printf、open等。 gdb调试工具:运行在target上的调试程序, 通过串口和TCP/IP和主机连接,进行远距离 调试。
8.2.1 常用于ARM平台的GNU Toolchain
sh脚本方式安装(.sh)
– sh arm-elf-tools-20030314.sh
tar解压方式安装(.tar.gz)
– tar zxvf arm-linux-gcc-2.95.3.tar.gz
rpm安装包方式安装(.rpm)
– rpm –ivh arm-linux-gcc-2.95.3-3.i386.rpm – rpm –ivh arm-linux-binutils-2.12.1-1.i386.rpm – rpm –ivh arm-linux-glibc-2.2.5-1.i386.rpm
第八章 创建交叉编译环境
嵌入式开发流程
建立交叉编译环境
启动代码Bootloader的实现/移植 kernel的配置/移植/编译
Байду номын сангаас
根文件系统Cramfs的实现
主要内容
交叉编译基础知识 为嵌入式开发建立交叉编译环境
8.1 交叉编译基础知识
8.1 交叉编译基础知识
交叉编译就是在一个平台上生成另一个平台上的 可执行代码。 这里说的平台分别指的是主机平台Host和目标平 台Target。 就我们在ARM平台上移植Linux来说,Host是一 台一般的PC机,它通过串口或网络接口与Target 通信;Target是arm-linux平台(这里说的arm指 的是平台所使用的CPU是ARM9处理器,linux指 的是运行的操作系统是Linux)。 我们在Host上开发程序,并在这个平台上运行交 叉编译器Cross Complier,编译我们的程序,而由 Cross Complier生成的程序将在Target上运行。
8.2.1 常用在ARM平台的GNU Toolchain
arm-linux-gcc:交叉编译linux内核 arm-elf-gcc:主要交叉编译uclinux内核 arm-uclinux-gcc:交叉编译uclinux内核 主要下载网址:www.gnu.org 为了在命令行中能够寻找到交叉编译器,我 们需要把他所在的路径加入到PATH环境变 量中 (例:/usr/local/arm/bin:$PATH )。
相关文档
最新文档