




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章第二章 搭建搭建Linux交叉编译开发环境交叉编译开发环境Cross compiling environmentCopyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.1 什么是交叉编译什么是交叉编译 什么是交叉编译呢?简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)和操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同一个操作系统也可以在不同的体系结构上运行。 Copyright 2003-2007 S
2、inoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链2.2.1 编译工具链编译工具链以下是一个基于RedHat linux的交叉编译环境的建立过程。整个编译过程包括:1.下载源文件、补丁和建立编译的目录;2.建立内核头文件;3.建立二进制工具(binutils);4.建立初始编译器(bootstrap gcc);5.建立c库(glibc);6.建立全套编译器(full gcc)。 Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链
3、建立交叉编译开发工具链(1)下载源文件、补丁和建立编译的目录 a, 下载:linux-2.4.21+rmk2;binutils-2.10.1;gcc-2.95.3;glibc-2.2.3;glibc-linuxthreads-2.2.3 b, 建目录:/home/xxx/embedded 下建立三个子目录 build-tools、kernel 和 tools c, 需要输出环境变量 Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链d, 建立编译目录: build-binutil
4、s编译binutils的目录 build-boot-gcc编译gcc 启动部分的目录 build-glibc编译glibc的目录 build-gcc编译gcc 全部的目录gcc-patch放gcc的补丁的目录Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链(2)建立内核头文件a, 把内核源代码放入$PRJROOT /kernel 目录 b,给 Linux 内核打上补丁c,编译内核生成头文件d, 建立正确的链接Copyright 2003-2007 SinoSys. All Ri
5、ghts Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链(3)建立二进制工具(binutils)a,解压binutils源文件b,然后进入build-binutils目录配置和编译binutils 注意:nadd2line将要找的地址转成文件和行号,它要使用 debug 信息。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链nar产生、修改和解开一个存档文件。nasgnu 的汇编器。nc+filtC+ 和 java 中有一种重载函数,所用
6、的重载函数最后会被编译转化成汇编的标号,c+filt 就是实现这种反向的转化,根据标号得到函数名。ngaspgnu 汇编器预编译器。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链nldgnu 的连接器。nnm列出目标文件的符号和对应的地址。nobjcopy将某种格式的目标文件转化成另外格式的目标文件。nobjdump显示目标文件的信息。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具
7、链建立交叉编译开发工具链nranlib为一个存档文件产生一个索引,并将这个索引存入存档文件中。nreadelf显示elf格式的目标文件的信息。nsize显示目标文件各个节的大小和目标文件的大小。nstrings打印出目标文件中可以打印的字符串,有个默认的长度,为4。nstrip剥掉目标文件的所有的符号信息。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链(4)建立初始编译器(bootstrap gcc)a,进入 build-tools 目录,将 gcc 源代码解压 b,然后进入
8、gcc-2.95.3目录给gcc打上补丁 c,配置boostrap gcc, 后面要用bootstrap gcc 来编译 glibc 库 d,编译并安装boot-gcc Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链注意:ngccgnu 的 C 语言编译器。nunprotoize将 ANSI C 的源码转化为 K&R C 的形式,去掉函数原型中的参数类型。ncppgnu的 C 的预编译器。ngcovgcc 的辅助测试工具,可以用它来分析和优化程序。Copyright 2003
9、-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链(5)建立c库(glibc)a, 解压 glibc-2.2.3.tar.gz 和glibc-linuxthreads-2.2.3.tar.gz源代码 b,进入build-glibc目录配置glibc c,编译和安装 glibc Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链注意:然后还要修改libc.so文件,将GROUP ( /lib/l
10、ibc.so.6 /lib/libc_nonshared.a)改为:GROUP ( libc.so.6 libc_nonshared.a)这样连接程序ld就会在 libc.so 所在的目录查找它需要的库,因为主机/lib目录可能已经装了一个相同名字的库,一个为编译可以在宿主机上运行的程序的库,而不是用于交叉编译的。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链(6)建立全套编译器(full gcc)在建立boot-gcc 的时候,我们只支持了C。到这里,我们就要建立全套编译器
11、,来支持C和C+ 注意:ng+gnu的 c+ 编译器。nprotoize与unprotoize相反,将K&R C的源码转化为ANSI C的形式,函数原型中加入参数类型。nc+gnu的c+编译器。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链2.2.2 下载工具链下载工具链这里主要介绍一下这里主要介绍一下Denx公司发布的一整套开放源码公司发布的一整套开放源码的 嵌 入 式的 嵌 入 式 L i n u x 开 发 工 具 链开 发 工 具 链 E L D K(Embedded
12、 Linux Development Kit) nELDK可以安装和运行在以下主机环境中:nFedora Core 1, 2 , 3 nRed Hat Linux 7.3, 8.0, 9 nSuSE Linux 8.x, 9.0, 9.1, 9.2 Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链nDebian 3.0 (Woody) and testing (Sarge) nUbuntu 4.10 nFreeBSD 5.0nSuse Linux 7.2, 7.3 nMandr
13、ake 8.2 nSlackware 8.1beta2 nGentoo Linux 1.4_rc2 nELDK同时支持ARM、PPC、MIPS等多种处理器。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链ELDK包括了一个安装工具和许多RPM包,他们可以安装到用户的交叉编译的主机的硬盘中。ELDK的RPM包可以分为2种:n嵌入式Linux开发工具;n为目标处理器编译好的工具和元件。n其中,第一部分包括执行在开发主机上的交叉编译工具,有GNU交叉编译器GCC、Binutils和G
14、DB等。n第二部分是一些已经编译好的、可以在目标开发板上运行的工具和库。这些工具和库可以用来建立一个Linux的Roofs文件系统。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.2 建立交叉编译开发工具链建立交叉编译开发工具链2.2.3 验证工具链验证工具链注意:通过上述两种方式建立的工具链,还需要经过验证方可使用,我们主要通过实际编译一个例子程序来验证。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3 配置主机服务配置主机服务n在嵌入式软件开发过程中
15、,有些主机服务是必要的,同时也会为我们的开发工作带来便利。n这里主要介绍四种主机服务:samba、DHCP、TFTP和NFS。Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3 配置主机服务配置主机服务2.3.1 配置配置sambanSamba服务使Linux和Windows之间实现文件共享,方便对文件的编辑。1) 修改samba配置文件/etc/samba/smb.conf 2) 为 Samba 创建一个单独的口令文件。要根据你的现存 /etc/passwd 文件来创建 3) 改变Samba口令文件的权限许可,因此只有根用
16、户才有读写权限 Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3 配置主机服务配置主机服务4) 要设置每个 Samba 用户的口令,使用以下命令(把username 替换为每个用户的用户名) 5) 加密口令必须在Samba配置文件中被启用6) 在shell提示下键入 service smb restart来确定smb服务被启动 7) 为避免每次启动主机都要手工启动samba服务,使用命令使得samba服务在每次系统启动时都默认执行 Copyright 2003-2007 SinoSys. All Rights Reserv
17、ed 双实科技双实科技2.3 配置主机服务配置主机服务2.3.2 配置配置DHCPnDHCP是动态主机配置协议。这个协议用于向计算机自动提供IP地址,子网掩码和路由信息。在开发的过程中,目标系统并没有自己的静态IP地址,它是在启动时向DHCP服务器申请,因此需要在主机上配置DHCP服务,以便在目标系统请求IP时,动态为它分配IP地址。 nDHCP服务的配置文件为/etc/dhcpd.conf,通过修改该文件进行配置。etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。 Copyright 2003-2007 SinoSys. All Ri
18、ghts Reserved 双实科技双实科技2.3 配置主机服务配置主机服务(1) DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户 (2) DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等 (3) DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开始 Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3 配置主机服务配置主机服务(4)重新启动dhcp服务 (5)为避免
19、每次启动主机都要手工启动dhcp服务,使用命令使得dhcp服务在每次系统启动时都默认执行 Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3 配置主机服务配置主机服务2.3.3 配置配置TFTP在目标系统的开发过程中,Linux内核是从主机下载到目标系统上解压并运行的,因此主机必须提供这种文件传输服务。Tftp是一种简单的文件传输协议,多用于嵌入系统应用中,因此主机需要配置tftp服务,供下载内核时使用 Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3
20、配置主机服务配置主机服务(1)修改配置参数(2)在主机上创建/tftpboot目录,以供存放内核(3)重新启动tftp服务 (4)为避免每次启动主机都要手工启动tftp服务,使用命令使得tftp服务在每次系统启动时都默认执行 Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3 配置主机服务配置主机服务2.3.4 配置配置NFS网络文件系统(NFS)是一种在网络上的机器间共享文件的方法,在开发的过程中,目标系统没有足够的本地存储设备供使用,它可以通过主机提供的NFS服务,使用在主机上的文件系统,就如同位于本地硬盘驱动器上一样
21、Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3 配置主机服务配置主机服务(1)修改NFS配置文件 注意:上面格式表示,同一共享目录提供给两个不同的主机,但提供给这两台主机的权限和参数可以是不同的。可以设定的参数主要有以下几种:Copyright 2003-2007 SinoSys. All Rights Reserved 双实科技双实科技2.3 配置主机服务配置主机服务nrw:可读写的权限;nro:只读的权限;nroot_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认);nno_root_squash:保留共享文件的UID和GID(默认);nall_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录;Co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供销阀门合同范例
- 书同城配送合同范例
- 买房时正式合同范例
- 个人棋牌转让合同范例
- 保险合同范例填写
- 中韩机电贸易合同范例
- 个人公寓佣金合同标准文本
- 中成药购销合同范例
- 公司并购收购协议合同范例
- 供暖招标合同范例
- (三模)豫西北教研联盟 (平许洛济)2024-2025学年高三第三次质量检测生物试卷(含答案)
- 《思想道德与法治》课件-第三章 继承优良传统 弘扬中国精神
- NB/T 11646-2024井工煤矿采空区自然发火监测预警技术规范
- 2025年劳动与社会保障专业考核试卷及答案
- 《危险化学品企业安全生产标准化规范》专业深度解读与应用培训指导材料之1:1范围+3术语和定义(雷泽佳编制-2025A0)
- 第18课《井冈翠竹》课件-2024-2025学年统编版语文七年级下册
- 第16课《有为有不为》公开课一等奖创新教学设计
- 【MOOC】《思想道德与法治》(东南大学)章节中国大学慕课答案
- MOOC 中医与辨证-暨南大学 中国大学慕课答案
- 国家开放大学《高等数学基础》形考任务1-4参考答案
- 焊接件检验合格率统计表
评论
0/150
提交评论