ARM----建立交叉编译环境_第1页
ARM----建立交叉编译环境_第2页
ARM----建立交叉编译环境_第3页
ARM----建立交叉编译环境_第4页
ARM----建立交叉编译环境_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM-建立交叉编译环境 中科大软件学院前提 嵌入式设备由于不具备一定的处理器能力和存储空间,程序开发一般用PC来完成,然后将可执行文件下载到嵌入式系统中运行。这是目前嵌入式程序开发的不二选 择Host/target模式。但这引发了一个问题:由于Host和Target的处理器体系结构不同,我们不能直接用PC上既有的程序开发工具,必 须使用跨平台开发工具,即在Host上生成能在Target上运行格式的目标文件。前提 本示例开发环境是:宿主机本示例开发环境是:宿主机 i386-redhat-7.2 i386-redhat-7.2,目标机目标机 arm arm /

2、download/Embedded System Design/Lab/总体过程 如下 1. 下载源文件、补丁和建立编译的目录 2. 建立内核头文件 3. 建立二进制工具(binutils) 4. 建立初始编译器(bootstrap gcc) 5. 建立c库(glibc) 6. 建立全套编译器(full gcc)总体过程 http:/ 可以看到各种CPU和GCC+Glibc版本那些已经编译成功,那些部分成功,那些彻底失败。选定软件版本号 我这里选择的版本号不是最新的,大家可以在网上找一下,可以相互匹配的版本来进行安装。 本示例选择的各个软件的版本是: linux-2.4.21-rmk2 (li

3、nux内核补丁) binutils-2.10.1gcc-2.95.3glibc-2.2.3glibc-linuxthreads-2.2.3选定软件版本号上述软件压缩包可以在我的教学主页上下载: 在你的用户目录,我用的是用户cb,因此用户目录为 /home/cb,先建立一个项目目录embedded2009,分别建立三个工作目录: build-tools用来存放你下载的 binutils、gcc 和 glibc 的源代码和用来编译这些源代码的目录。 kernel用来存放你的内核源代码和内核补丁。 tools用来存放编译好的交叉编译工具和库文件建立工作目录设定环境变量 export PRJROOT=

4、/home/cb/embedded2009 export TARGET=arm-linuxexport PREFIX=$PRJROOT/toolsexport TARGET_PREFIX=$PREFIX/$TARGETexport PATH=$PREFIX/bin:$PATH 注意注意PRJROOTPRJROOT中中embedded2009embedded2009后面没有后面没有/,否则在,否则在后面配置中会出现错误。后面配置中会出现错误。设定环境变量建立编译目录build-binutils-编译binutils的目录build-boot-gcc-编译gcc 启动部分的目录build-glib

5、c-编译glibc的目录build-gcc-编译gcc 全部的目录建立编译目录 将你下载的 binutils-2.10.1、gcc-2.95.3、glibc-2.2.3 和 glibc-linuxthreads-2.2.3 的源代码放入 build-tools 目录中 建立内核头文件 到:/pub/linux/kernel/v2.4/ 下载 linux-2.4.21.tar.gz及补丁放在$PRJROOT /kernel 目录 建立内核头文件对linux-2.4.21.tar.gz进行解压缩:tar -xzvf linux-2.4.21.tar.gz 建

6、立内核头文件# bzip2 -d patch-2.4.21-rmk1.bz2 # cd linux-2.4.21 # patch -p1 ./patch-2.4.21-rmk1 给Linux 内核打上补丁 :建立内核头文件编译内核生成头文件$make ARCH=arm CROSS_COMPILE=arm-linux- menuconfigARCH=arm指定目标系统的体系结构,这里是针对ARM,如果你不指定 ARCH=arm,那么会针对你的本地系统(X86)配置内核.正确界面在下一页:注意:在编译的时候,要全屏幕。否则会提示:建立内核头文件 配置完退出并保存,检查一下的内核目录中的 inclu

7、de/linux/version.h 和 include/linux/autoconf.h 文件是不是生成了,这是编译 glibc 是要用到的,version.h 和 autoconf.h 文件的存在,也说明了你生成了正确的头文件。 建立内核头文件 配置结束, 退出menuconfig时, 它提示你运行 make dep, 其实不需要运行它. 因为因为此处只是简单的配置此处只是简单的配置, , 不编译内核不编译内核. . 建立内核头文件 建立几个正确的链接 :为交叉编译环境建立内核头文件的链接 :建立二进制工具(binutils) 会出现很多 check,最后产生 Makefile 文件。有了

8、 Makefile 后,我们来编译并安装 binutils,命令很简单。然后 make (时间2分钟左右) make install(很快)建立二进制工具(binutils) 编译后在$PREFIX/bin下将产生14个文件,如下:建立初始编译器(bootstrap gcc) cd $PRJROOT/build-toolstar -xvzf gcc-2.95.3.tar.gz建立初始编译器(bootstrap gcc) 将GCC补丁放在如下的目录:建立初始编译器(bootstrap gcc) 然后进入 gcc-2.95.3 目录给 gcc 打上补丁:cd gcc-2.95.3patch -p1

9、 ./gcc-patch/gcc-2.95.3.-2.patchpatch -p1 ./gcc-patch/gcc-2.95.3.-no-fixinc.patchpatch -p1 gcc/cstamp-h.in 我下面的截图不是很完全建立初始编译器(bootstrap gcc) 应该这样修改t-linux: 在TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC语句之前添加T_CFLAGS = -Dinhibit_libc -D_gthr_posix_h成为:T_CFLAGS = -Dinhibit_libc -D_gthr_posix_hTA

10、RGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC 在我们编译并安装 gcc 前,我们先要改一个文件 $PRJROOT/gcc-2.95.3/gcc/config/arm/t-linux :建立初始编译器(bootstrap gcc)配置boostrap gcc, 后面要用bootstrap gcc来编译 glibc 库:建立初始编译器(bootstrap gcc) Make (大约2分钟) Make install-gcc(很快,1分钟不到) 查看$PREFIX/bin多了 arm-linux-gcc 、arm-linux-unprotoize、

11、cpp 和 gcov 几个文件,如下:建立 c 库(glibc) 首先解压 glibc-2.2.3.tar.gz 和 glibc-linuxthreads-2.2.3.tar.gz 源代码建立 c 库(glibc) 然后进入 build-glibc 目录配置 glibc建立 c 库(glibc) 配置完后就可以编译和安装 glibc其中其中makemake时间很长,大约有时间很长,大约有1515分钟。分钟。Make installMake install的时候极有可能出现问题。如下一页的时候极有可能出现问题。如下一页PPTPPT建立 c 库(glibc)建立 c 库(glibc) 解决方法,编

12、辑stdio.texi,将3268,3269行修改为:建立 c 库(glibc)修改$TARGET_PREFIX/lib目录中的libc.so cd $TARGET_PREFIX/lib cat libc.solibc.so的内容:/* GNU ld script Use the shared library, but some functions are only in the static library, so try that secondarily. */GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a )将/lib/绝对目录去掉, 既将GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a )改为:GROUP ( libc.so.6 libc_nonshared.a )建立 c 库(glibc)建立全套编译器(full gcc) 在建立boot-gcc 的时候,只支持了C。到这里,建立全套编译器,来支持C和C+ 建立全套编译器(full gcc) 然后编译和安装你的 full gcc建立全套编译器(ful

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论