uclinux在ARM上的移植.doc_第1页
uclinux在ARM上的移植.doc_第2页
uclinux在ARM上的移植.doc_第3页
uclinux在ARM上的移植.doc_第4页
uclinux在ARM上的移植.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

要完成uclinux在ARM上的移植,必须有这个工具。下载地址:/download.html 这个网站上还有许多其它资源可以下载。我选择 arm-elf-tools-20040427.sh 这个版本,大小是16.8M,电信2M带宽,用FIREFOX自带下载工具下载速度为110K左右,速度还是挺快的。安装过程:1、看这个文件的属性ls -l arm-elf-tools-*2、修改属性chmod 755 arm-elf-tools*3、执行解压安装如在ubuntu下必须sudo ,其它版linux下,要用root。sudo sh ./arm-elf-tools-20040427.sh一般情况下,会提示以下错误:tail: cannot open +43 for reading: No such file or directorygzip: stdin: not in gzip formattar: This does not look like a tar archivetar: Error exit delayed from previous errors解决方法:*tail问题:tail: cannot open +43 for reading: No such file or directory用VIM打开该文件,将第39行的代码:tail +$SKIP $SCRIPT | gunzip | tar xvf -改成如下:tail -n +$SKIP $SCRIPT | gunzip | tar xvf -vim arm-elf-tools*键入:I ,进入插入模式在第39行加入 “-n”*gunzip问题:gunzip: stdin: unexpected end of file要在arm-elf-tools-20030314.sh 最后一行加入一空行:完成上面第一个tail问题后,按ESC,进入命令模式,键入G,跳到文章最后,键入I,在最后一行尾加回车。重新执行sudo sh ./arm-elf*.sh命令后,可以发现已经装好了。可以测试一下:arm-elf-gcc -v显示:Reading specs from /usr/local/lib/gcc-lib/arm-elf/2.95.3/specsgcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from /coldfire/)(uClinux XIP and shared lib patches from /)4、测试下编译器先写一个小程序:/*test.c*/#include int main()int i;for(i=0;i6;i+)printf(i=%dn,i);printf(Hello,embedded linux!n);return 0;终端下输入命令:arm-elf-gcc -WI,elf2flt -o test test.c提示:cc1: Invalid option -WI,-elf2flt还没有找到解决方法,慢慢来,后面写。一些编译器相关知识学习。GNU GCC简介:GNU GCC是一套面向嵌入式领域的交叉编译工具,支持多种编程语言、多种优化选项并且能够支持分步编译、支持多种反汇编方式、支持多种调试信息格式,目前支持X86、ARM7、StrongARM、PPC4XX、MPC8XX、MIPS R3000等多种CPU。 GNU GCC的基本功能包括:输出预处理后的C/C+源程序(展开头文件和替换宏)输出C/C+源程序的汇编代码输出二进制目标文件生成静态库生成可执行程序转换文件格式GCC 组成:1. C/C+交叉编译器arm-elf-gccarm-elf-gcc是编译的前端程序,它通过调用其他程序来实现将程序源文件编译成目标文件的功能。编译时,它首先调用预处理程序(cpp)对输入的源程序进行处理,然后调用 cc1 将预处理后的程序编译成汇编代码,最后由arm-elf-as将汇编代码编译成目标代码。arm-elf-gcc具有丰富的命令选项,可以控制编译的各个阶段,满足用户的各种编译需求。2. 汇编器 arm-elf-asarm-elf-as将汇编语言程序转换为ELF (Executable and Linking Format,执行时链接文件格式)格式的可重定位目标代码,这些目标代码同其它目标模块或函数库易于定位和链接。arm-elf-as产生一个交叉参考表和一个标准的符号表,产生的代码和数据能够放在多个区 (Section)中。3. 连接器arm-elf-ld arm-elf-ld根据链接定位文件Linkcmds中的代码区、数据区、BSS区和栈区等定位信息,将可重定位的目标模块链接成一个单一的、绝对定位的目标程序。该目标程序是ELF格式,并且可以包含调试信息。 arm-elf-ld会产生一个内存映象文件Map.txt,该文件显示所有目标模块、区和符号的绝对定位地址。它也产生交叉参考列表,显示参考每个全局符号的目标模块。 arm-elf-ld支持将多个目标模块链接成一个单一的、绝对定位的目标程序,也能够依此对目标模块进行链接,这个特性称为增量链接(Incremental Linking)。 假如输入文件是一个函数库,arm-elf-ld会自动从函数库装载被其它目标模块参考的函数模块。arm-elf-ld与其它链接程序相比,能提供更有帮助的诊断信息。许多链接器遇到第一个错误即放弃链接,而arm-elf-ld只要有可能都继续执行,帮助用户识别其它错误,有时甚至能获得输出代码。4. 库管理器arm-elf-ar arm-elf-ar将多个可重定位的目标模块归档为一个函数库文件。采用函数库文件,应用程序能够从该文件中自动装载要参考的函数模块,同时将应用程序中频繁调用的函数放入函数库文件中,易于应用程序的开发管理。arm-elf-ar支持ELF格式的函数库文件.5. 工程管理器MAKE Make是用于自动编译、链接程序的实用工具,使用make后就不需要手工的编译每个程序文件。要使用make,首先要编写makefile。 Makefile描述程序文件之间的依赖关系,并提供更新文件的命令。在一个程序中,可执行文件依赖于目标文件,而目标文件依赖于源文件。如果 makefile文件存在,每次修改完源程序后,用户通常所需要做的事情就是在命令行敲入“make”,然后所有的事情都由make来完成。6. 其他实用程序 目标文件格式转换工具arm-elf-objcopy支持的文件格式有H-record、S-record、ABS、BIN、COFF、ELF。例如,它能够将ELF格式文件转换为其它格式的文件,如intel H-record格式、Motorola S-record等。arm-elf-nm程序用于显示文件中的符号信息。 GCC编译程序的基本过程:arm-elf-gcc根据输入文件的后缀来确定文件的类型,然后根据用户的编译选项(包括优化选项、调试信息选项等)将其编译成相应的汇编临时文件(后缀为.s);arm-elf-as将该汇编文件编译成目标文件(后缀为.o);arm-elf-ld 根据用户的链接选项(包括指定链接命令文件等)将目标文件和各种库链接起来生成可执行文件。C/C+交叉编译器arm-elf-gccarm-elf-gcc是编译的前端程序,它通过调用其他程序来实现将程序源文件编译成目标文件。编译时它首先调用预处理程序(cpp)对输入的源程序进行处理;然后调用cc1将预处理后的程序编译成汇编代码;最后由arm-elf-as将汇编代码编译成目标代码。1.命令格式arm-elf-gcc options file在命令arm-elf-gcc后面跟一个或多个选项,选项间用空格隔开,然后跟一个或多个目标文件。例如,将test.c 编译成目标文件test.o 并且生成调试信息:arm-elf-gcc g c o test.o test.c 2.命令选项列表输出控制选项:-c 将输入的源文件编译成目标文件-S 将C/C+文件生成汇编文件-o file 将输出内容存于文件file-pipe在编译的不同阶段之间采用管道通讯方式-v打印出编译过程中执行的命令-x language说明文件的输入类型为languageC语言选项:-ansi支持所有ANSI C程序警告选项:-w关闭所有警告-Wall打开所有警告-Wimplicit如果有隐含申明,显示警告信息-Wno-implicit不显示对隐含申明的警告调试选项:-g在文件中产生调试信息(调试信息的文件格式有stabs、COFF、XCOFF、DWARF)优化选项:-O0不优化-O1一级优化-O2二级优化-O3三级优化预处理选项:-E 运行C的预处理器-C 在运用-E进行预处理时不去掉注释-D macro 定义宏macro为1-D macro=defn定义宏macro为defn汇编选项:-Wa,option将选项option传递给汇编器搜索路径选项:-I dir 设置搜索路径为dir-I- 指定只对 #includefile,有效的头文件搜索目录 3. 源文件类型的识别arm-elf-gcc能够自动根据文件名后缀识别文件类型.文件名后缀和文件类型的对应关系如下:*.c C源文件*.i 经过预处理后的C源文件*.h C头文件*.ii 经过预处理后的C+源文件*.cc C+源文件*.cxx C+源文件*.cpp C+源文件*.CC+源文件*.s 不需要预处理的汇编文件*.S需要预处理的汇编文件此外,用户可通过-x language说明文件的输入类型,此时可以不用以上的后缀规则。-x language其中的language可为:c C源文件c+ C+源文件c-header C头文件cpp-output 经过预处理后的C源文件c+-cpp-output 经过预处理后的C+源文件assembler 不需要预处理的汇编文件assembler-with-cpp需要预处理的汇编文件例如,编译一个不需要预处理的C程序:arm-elf-gcc c g xcpp-output test.c 常用的交叉编译起可以从下边的站点下载: /coldwell/toolchain//crosstool/一下内容摘自:/zhxubo/blog/item/ee0987b41c66a0748ad4b263.html/download/projects/toolchain/.uk/pub/armlinux/toolchain//list.aspx?word=arm-linux-gcc-4.1.2&schoolInput=%CB%F9%D3%D0%D1%A7%D0%A3&schoolId=0&level=0:9981/pub/snapgear/tools/arm-linux/ 3.4.1最 常用的编译版本是arm-linux-gcc-3.4.1 和 arm-linux-3.3.2 的,现在的嵌入式开发基本上用的是这些,3.4.1的用于编译2.6的内核,而3.3.2的常用于编译busybox,和bootloader(u- boot),编译的版本配合不好的话就会出错,所以要选择好编译版本,如果这个版本不行的话,可以试试其他的版本,在uclinux上用的多的就是 arm-elf-tools-20030314/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2如 果系统中又装了3.4.1和3.3.2的版本的话,可以在 .bashrc 中通过设置PATH来指定默认的版本为GCC3.4.1,然后再打开一个新的终端就可以用了,如果需要使用3.3.2的话,可以用具体的路径指定 (/usr/local/arm/3.3.2/bin/arm-linux-)。在/.bashrc最后加入:export PATH=$PATH:/usr/local/arm/3.4.1/bin 如果编译u-boot或者busybox的时候指定3.3.2的版本:CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux-3.4.1的就直接用arm-linux-就可以了。arm-linux-gcc-4.2.1的版本在 :9981/pub/snapgear/tools/arm-linux/ 这里可以下载,arm-linux-tools-20070808.tar.gz 这个可能是4.2.1的版本,因为下面有编译4.2.1的方法还有相应的代码包,build-arm-linux-4.2.1,此版本由于过大,我没有下载。下面的这个是ARM官方给的下载链接4.2.1的/gnu_toolchains/arm/download.html,然后将HOST选择为IA32 GNU/Linux,点击下载就可以了。不过前缀为arm-none-eabi-而不是arm-linux-有点郁闷。自 己编译一个交叉编译环境是个很艰难的过程,有些软件又依赖不同的版本,所以自己维护一个是相当费时费力伤脑筋的过程,关于arm-linux- toolchain,arm-elf-toochain的区别,主要是编译过程中所用的C库的不同,arm-linux用的是glibc,arm-elf 用的是newlibc,ulibc等,具体的可以去网上搜集,一般编译arm+linux的用arm-linux-,而编译uclinux则用arm- elf-这是我在网上找到的一些下载交叉编译环境的网站0..uk/pub/armlinux/toolchain cross-2.95.3.tar.bz2 20-Jul-2001 21:12 35M cross-3.0.tar.bz2 20-Jul-2001 22:27 39M cross-3.2.tar.bz2 23-Aug-2002 11:04 81M cross-3.2.tar.gz 23-Aug-2002 10:01 93M 1./download.html GCC 3.4.0 based :arm-uclinux-tools-base-gcc3.4.

温馨提示

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

评论

0/150

提交评论