搭建Linux交叉编译开发环境ppt课件_第1页
搭建Linux交叉编译开发环境ppt课件_第2页
搭建Linux交叉编译开发环境ppt课件_第3页
搭建Linux交叉编译开发环境ppt课件_第4页
搭建Linux交叉编译开发环境ppt课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 搭建Linux交叉编译开发环境Cross compiling environment 什么是交叉编译呢?简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需求留意的是所谓平台,实践上包含两个概念:体系构造Architecture和操作系统Operating System。同一个体系构造可以运转不同的操作系统;同一个操作系统也可以在不同的体系构造上运转。 2.1 什么是交叉编译2.2.1 编译工具链以下是一个基于RedHat linux的交叉编译环境的建立过程。整个编译过程包括:下载源文件、补丁和建立编译的目录;建立内核头文件;建立二进制工具binutils;建立初始编译器bo

2、otstrap gcc;建立c库(glibc);建立全套编译器full gcc。 2.2 建立交叉编译开发工具链需求:下载源文件、补丁和建立编译的目录 a, 下载:binutils-2.11.2.tar, diff-2.4.9-ac9-rmk1-np1, gcc-2.95.3.tar, glibc-2.2.4.tar, glibc-linuxthreads-2.2.4.tar, linux-2.4.9.tar, patch-2.4.9-ac9, patch-2.4.9-ac9-rmk1, patch-2.4.9-ac9-rmk2b, 建目录:将一切的源代码放到/usr/tmp/下;交叉编译器将

3、安装在/opt/host/armv5/2.2 建立交叉编译开发工具链建立整个tool chain的步骤2.2 建立交叉编译开发工具链(1) Installing binutils# cd /tmp# tar zxvf binutils-2.11.2.tar.gz# cd binutils-2.11.2# ./configure -target=armv5-unknown-linux -prefix=/opt/host/armv5# make# make install2.2 建立交叉编译开发工具链留意:这样就在/opt/host/armv5/bin下产生了binutils,它们的作用如下:ad

4、dr2line将要找的地址转成文件和行号,它要运用 debug 信息。ar产生、修正和解开一个存档文件。asgnu 的汇编器。2.2 建立交叉编译开发工具链c+filtC+ 和 java 中有一种重载函数,所用的重载函数最后会被编译转化成汇编的标号,c+filt 就是实现这种反向的转化,根据标号得到函数名。gaspgnu 汇编器预编译器。2.2 建立交叉编译开发工具链ldgnu 的衔接器。nm列出目的文件的符号和对应的地址。objcopy将某种格式的目的文件转化成另外格式的目的文件。objdump显示目的文件的信息。2.2 建立交叉编译开发工具链ranlib为一个存档文件产生一个索引,并将这个

5、索引存入存档文件中。readelf显示elf格式的目的文件的信息。size显示目的文件各个节的大小和目的文件的大小。strings打印出目的文件中可以打印的字符串,有个默许的长度,为4。strip剥掉目的文件的一切的符号信息。2.2 建立交叉编译开发工具链2输出工具的途径,使得以后的编译任务能看到这些工具:# export PATH=/opt/host/armv5/bin:$PATH2.2 建立交叉编译开发工具链3建立编译需求运用的头文件# cd /tmp# tar zxvf linux-2.4.9.tar.gz# mv linux linux-2.4.9-ac9-rmk1-np1# mv p

6、atch-2.4.9-ac9.gz patch-2.4.9-ac9-rmk1.bz2 diff-2.4.9-ac9-rmk1-np1.gz ./linux-2.4.9-ac9-rmk1-np12.2 建立交叉编译开发工具链# cd linux-2.4.9-ac9-rmk1-np1 : kernel 2.4.9# gzip -cd patch-2.4.9-ac9.gz | patch -p1 : Alan Cox patch# bzip2 -cd patch-2.4.9-ac9-rmk1.bz2 | patch -p1 : Russell King patch# gzip -cd diff-2.

7、4.9-ac9-rmk1-np1.gz | patch -p1 : Nicholas Pitre patch# make menuconfig : Do to create ARM header files. When you exit, select save item.# make dep : Also do to create header files.# cd /opt/host/armv4l/armv4l-unknown-linux# cd include : If not existing, make include directory.# cp -a /usr/include/*

8、 . : Copy all header files under /usr/include dir to the current dir.# ln -s /tmp/linux-2.4.9-ac9-rmk1-np1/include/asm-arm asm# ln -s /tmp/linux-2.4.9-ac9-rmk1-np1/include/linux linux留意:要把linux的头文件拷做来作为编译的头文件的缘由是,我们要编译的是给ARM处置器运用的编译器,那么就需求一个用于ARM处置器的Linux内核系统的头文件4编译ARM-GCC交叉编译器# cd gcc-2.95.3# ./con

9、figure -target=armv4l-unknown-linux -prefix=/opt/host/armv4l# make LANGUAGES=c# make LANGUAGES=c install留意:gccgnu 的 C 言语编译器。unprotoize将 ANSI C 的源码转化为 K&R C 的方式,去掉函数原型中的参数类型。cppgnu的 C 的预编译器。gcovgcc 的辅助测试工具,可以用它来分析和优化程序。2.2 建立交叉编译开发工具链建立c库(glibc)# cd /tmp# tar zxvf glibc-2.2.4.tar.gz# mv glibc-linuxth

10、reads-2.2.4.tar.gz ./glibc-2.2.4# cd glibc-2.2.4# tar zxvf glibc-linuxthreads-2.2.4.tar.gz2.2 建立交叉编译开发工具链# CC=armv5-unknown-linux-gcc ./configure arm-linux -enable-add-ons-build=i686-pc-linux-gnu -disable-iconv-with-headers=/tmp/linux-2.4.9-ac9-rmk1-np1/include-prefix=/opt/host/armv4l# make# make in

11、stall2.2 建立交叉编译开发工具链留意:glibc主要是程序运转所需求的库函数的集合,包括输入输出,数学,io控制等等2.2 建立交叉编译开发工具链6安装g+# cd /tmp/gcc-2.95.3# ./configure -target=armv4l-unknown-linux-with-libs=/opt/host/armv4l/lib-with-headers=/opt/host/armv4l/include-prefix=/opt/host/armv4l# make LANGUAGES=c c+# make LANGUAGES=c c+ install2.2 建立交叉编译开发工

12、具链留意:g+gnu的 c+ 编译器。protoize与unprotoize相反,将K&R C的源码转化为ANSI C的方式,函数原型中参与参数类型。c+gnu的c+编译器。2.2 建立交叉编译开发工具链2.2.2 下载工具链这里主要引见一下Denx公司发布的一整套开放源码的嵌入式Linux开发工具链ELDKEmbedded Linux Development Kit ELDK可以安装和运转在以下主机环境中:Fedora Core 1, 2 , 3 Red Hat Linux 7.3, 8.0, 9 SuSE Linux 8.x, 9.0, 9.1, 9.2 2.2 建立交叉编译开发工具链De

13、bian 3.0 (Woody) and testing (Sarge) Ubuntu 4.10 FreeBSD 5.0Suse Linux 7.2, 7.3 Mandrake 8.2 Slackware 8.1beta2 Gentoo Linux 1.4_rc2 ELDK同时支持ARM、PPC、MIPS等多种处置器。2.2 建立交叉编译开发工具链ELDK包括了一个安装工具和许多RPM包,他们可以安装到用户的交叉编译的主机的硬盘中。ELDK的RPM包可以分为2种:嵌入式Linux开发工具;为目的处置器编译好的工具和元件。其中,第一部分包括执行在开发主机上的交叉编译工具,有GNU交叉编译器GCC

14、、Binutils和GDB等。第二部分是一些曾经编译好的、可以在目的开发板上运转的工具和库。这些工具和库可以用来建立一个Linux的Roofs文件系统。2.2 建立交叉编译开发工具链2.2.3 验证工具链留意:经过上述两种方式建立的工具链,还需求经过验证方可运用,我们主要经过实践编译一个例子程序来验证。2.2 建立交叉编译开发工具链在嵌入式软件开发过程中,有些主机效力是必要的,同时也会为我们的开发任务带来便利。这里主要引见四种主机效力:samba、DHCP、TFTP和NFS。2.3 配置主机效力2.3.1 配置sambaSamba效力使Linux和Windows之间实现文件共享,方便对文件的编

15、辑。1)修正samba配置文件/etc/samba/smb.conf 2)为 Samba 创建一个单独的口令文件。要根据他的现存 /etc/passwd 文件来创建 3)改动Samba口令文件的权限答应,因此只需根用户才有读写权限 2.3 配置主机效力4)要设置每个 Samba 用户的口令,运用以下命令把username 交换为每个用户的用户名 5)加密口令必需在Samba配置文件中被启用6)在shell提示下键入 service smb restart来确定smb效力被启动 7)为防止每次启动主机都要手工启动samba效力,运用命令使得samba效力在每次系统启动时都默许执行 2.3 配置主

16、机效力2.3.2 配置DHCPDHCP是动态主机配置协议。这个协议用于向计算机自动提供IP地址,子网掩码和路由信息。在开发的过程中,目的系统并没有本人的静态IP地址,它是在启动时向DHCP效力器恳求,因此需求在主机上配置DHCP效力,以便在目的系统恳求IP时,动态为它分配IP地址。 DHCP效力的配置文件为/etc/dhcpd.conf,经过修正该文件进展配置。etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。 2.3 配置主机效力(1)DHCP配置文件中的parameters参数:阐明如何执行义务,能否要执行义务,或将哪些网络配置选项

17、发送给客户 (2)DHCP配置文件中的declarations 声明:用来描画网络规划、提供客户的IP地址等 (3)DHCP配置文件中的option选项:用来配置DHCP可选参数,全部用option关键字作为开场 2.3 配置主机效力重新启动dhcp效力 为防止每次启动主机都要手工启动dhcp效力,运用命令使得dhcp效力在每次系统启动时都默许执行 2.3 配置主机效力2.3.3 配置TFTP在目的系统的开发过程中,Linux内核是从主机下载到目的系统上解压并运转的,因此主机必需提供这种文件传输效力。Tftp是一种简单的文件传输协议,多用于嵌入系统运用中,因此主机需求配置tftp效力,供下载内

18、核时运用 2.3 配置主机效力修正配置参数在主机上创建/tftpboot目录,以供存放内核重新启动tftp效力 为防止每次启动主机都要手工启动tftp效力,运用命令使得tftp效力在每次系统启动时都默许执行 2.3 配置主机效力2.3.4 配置NFS网络文件系统NFS是一种在网络上的机器间共享文件的方法,在开发的过程中,目的系统没有足够的本地存储设备供运用,它可以经过主机提供的NFS效力,运用在主机上的文件系统,就好像位于本地硬盘驱动器上一样 2.3 配置主机效力修正NFS配置文件 留意:上面格式表示,同一共享目录提供应两个不同的主机,但提供应这两台主机的权限和参数可以是不同的。可以设定的参数主要有以下几种:2.3 配置主机

温馨提示

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

评论

0/150

提交评论