欢迎来到天天文库
浏览记录
ID:35399074
大小:84.56 KB
页数:18页
时间:2019-03-24
《构建嵌入式liunx系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、构建嵌入式liunx系统4.1.1基础知识由于一般嵌入式开发系统存储容量有限,在裁减和定制Linux,运用于嵌入式系统前,通常需要在PC机上建立一个用于目标机的交叉编译环境,也就是将各种二进制工具程序集成为工具链,其中包括如GNU的链接器(Id)、GNU的汇编器(as)、ar(产生修改和解开一个存档文件)、C编译器(gcc)以及C链接库(glibc)o本文以在Linux系统上针对目标机arm为例,介绍了跨平台开发工具链的建立过程。2什么是交叉编译?简单地说,交叉编译就是在一个平台上生成在另一个平台上执行的代码。这里的平台包括体系结构(
2、Architecture)和操作系统(OS)o同一个体系结构可以运行不同的操作系统,同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,x86Linux平台是Intelx86体系结构和Linuxforx86操作系统的统称。为什么要用交叉编译?原因有两个。一是目标平台所需要的bootloader以及OS核心还没有建立时,需要作交叉编译。二是目标机设备不具备一定的处理器能力和存储空间,即单独在目标板上无法完成程序开发,所以只好求助宿主机。这样可以在宿主机上对即将在目标机上运行的应用程序进行编译,生成可以在目标机上运行的代码格式,然
3、后移植到目标板上,也就是目前嵌入式程序开发的Host/Target模式。3对于i386的理解如果单纯说i386、i686,就是指平时所说的CPU类型。从Linux内核设计上讲,i386是架构,i486/586/686这些CPU的架构都是i386,所以很多linux方面的设计都是基于i386。简单地说,i386跟ppc,alpha,arm等放在一起时就是指架构,跟i586,i686放在一起指处理器型号,一个是横向的,一个是纵向的。4.1.2GUN跨平台开发链的建立过程1选定软件版本要想选用适当的版本,以保证建立的工具链可用,就必须找到适
4、合主机和目标板的组合。这些可以自己测试,也可以从网上寻找已经测试过的版本组合,即binutils>gcc>glibc的版本组合。我用的宿主机为redhat-9.0,目标机arm,选择的版本如下:binutils-2.11.2.tar.gz包含有Id、ar>as等一些产生或者处理二进制文件的工具。gcc-core-2.95.3.tar.gz包含GCC的主体部分。gcc-g++2.95.3.tar.gz可以使GCC编译C++程序。glibc-2.2.4.tangzlibc是很多用户层应用都要用到的库,即C链接库。glibc-linuxth
5、reads-2.2.4.tar.gzlibc用于支持Posix线程单独发布的压缩包。linux-2.4.21.tar.gz+rmklLinux的内核及其支持ARM的补丁包。你可以尝试选定更新的版本,编译无法通过时,依次使用较旧的版本。即时发现新版本组合能够编译成功,仍然需要测试建立的工具链是否可以使用O你可以从FTP网站ftp://ftp.gnu.OFg/gnii/或者任何其他的镜像网站下载GNU工具链的各个组件:binutils包位于binutils目录,gcc包位于gcc目录,而glibc包与glibc-linuxthreads包
6、放在glibc目录。下面给出上面选用的各个版本的下载路径。binutils-2.11.2.tar.gzftp://ftp.gnu>org/gnu/binutils/binutils-2.11.2.tar.gzgcc-core-2.95.3.tar.gzftp://ftp.gnu.Org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gzgcc-g++2.95.3.tar.gzftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gzglibc-2
7、.2.4.tar.gzftp://ftp.gnu.Org/gnu/gIibc/glibc-2.2.4.tar.gzglibc-linuxthreads-2.2.4.tar.gzftp://ftp.gnu.Org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gzlinux-2.4.21.tar.gz+rmklftp://ftp.kernle.Org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gzftp://ftp.arm.linux.org.Uk/pub/linux/
8、arm/kernel/v2.4/patch・2.4.21-rmkl.gz2建立工作目录我的用户名为lqm,所以所有的工作都在/home/lqm下面建立完成。输入命令用红色标记,结果用绿色。rj>rj>rjwrjwrj>r
此文档下载收益归作者所有