计算机知识Linu嵌入式开发建立交叉编译环境0421005159第一期
嵌入式系统第八讲 嵌入式Linux交叉编译环境
why虚拟机 why虚拟机Linux? 虚拟机Linux?
采用虚拟机,有如下原因和方便: 采用虚拟机,有如下原因和方便:
虚拟机也能够控制系统硬件 完全能够满足交叉编译环境需要 方便与Windows系统进行切换 方便与Windows系统进行切换 使用Windows下文件来作为硬盘空间 下文件来作为硬盘空间, 使用Windows下文件来作为硬盘空间,相对 于双系统, 于双系统,不需复杂的硬盘分区 虚拟机在Windows下 是几个文件, 虚拟机在Windows下,是几个文件,方便备 份和恢复 在本实验系统中,Windows系统和Redhat 在本实验系统中,Windows系统和 系统和Redhat 系统都必不可少, 系统都必不可少,虚拟机比较方便
直接点击“ 直接点击“new virtual machine”
建立新的虚拟机(实验室已建) 建立新的虚拟机(实验室已建)
选择安装文件
建立新的虚拟机(实验室已建) 建立新的虚拟机(实验室已建)
选择操作系统类型
建立新的虚拟机(实验室已建) 建立新的虚拟机(实验室已建)
选择虚拟机在硬盘的保存目录
建立新的虚拟机(实验室已建) 建立新的虚拟机(实验室已建)
虚拟机中网络设置
虚拟机中网络设置
虚拟机中网络设置
需要设置内容
IP 网关 DNS
设置好后,可以解除网卡eth0,然后再激 设置好后,可以解除网卡eth0, 来使新IP生效 活,来使新IP生效 当前IP设置 可用ifconfig命令查看 设置, 当前IP设置,可用ifconfig命令查看
虚拟机中网络设置
安装完毕启动
登录系统
本系统用户
超级管理员
用户名root,密码eescut 用户名root,密码eescut
linux交叉编译环境搭建步骤
linux交叉编译环境搭建步骤在Linux系统下搭建交叉编译环境主要涉及以下几个步骤:2. 配置环境变量:将交叉编译工具链的路径添加到系统的环境变量中以便于使用。
可以在用户的`.bashrc`或`.bash_profile`文件中添加如下行:```bashexport PATH=<path_to_toolchain>/bin:$PATH```其中`<path_to_toolchain>`是指交叉编译工具链所在的路径。
3.设置目标平台的系统根目录:交叉编译时需要使用目标平台的系统库和头文件,因此需要设置目标平台的系统根目录。
可以通过以下方式设置:```bashexport SYSROOT=<path_to_sysroot>```其中`<path_to_sysroot>`是指目标平台的系统根目录。
4.编写一个简单的交叉编译项目:为了验证交叉编译环境是否搭建成功,可以编写一个简单的交叉编译项目进行测试。
例如,编写一个简单的C程序,将其交叉编译为ARM平台下的可执行文件。
```c#include <stdio.h>int maiprintf("Hello, world!\n");return 0;```将上述代码保存为`hello.c`文件。
然后,使用以下命令进行交叉编译:```basharm-linux-gnueabi-gcc -o hello hello.c```编译完成后,会生成一个名为`hello`的可执行文件。
在ARM平台上执行该可执行文件,将输出`Hello, world!`。
以上就是在Linux系统下搭建交叉编译环境的基本步骤。
根据具体的需求,可能还需要进行其他的配置和设置。
交叉编译环境的搭建简介(精)
交叉编译环境的搭建简介在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。
这个编译过程就叫交叉编译。
简单地说,就是在一个平台上生成另一个平台上的可执行代码。
这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture、操作系统(Operating System。
同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux forx86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。
有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。
我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码编译(compile成计算机可以识别和执行的二进制代码。
比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。
这种方式下,我们使用PC 平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为native compilation,中文可理解为本机编译。
然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。
这种情况下,在ARM 平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain需要很大的存储空间,并需要很强的CPU 运算能力。
Linux嵌入式交叉编译环境的搭建【转】
Linux嵌⼊式交叉编译环境的搭建【转】转⾃:1. 安装标准的C开发环境,由于Linux安装默认是不安装的,所以需要先安装⼀下(如果已经安装好的话,就可以免去这⼀步了): #sudo apt-get install gcc g++ libgcc1 libg++ make gdb2. 下载arm-linux-gcc-3.4.1.tar.bz2到任意的⽬录下,我把它下载到了我的个⼈⽂件夹⾥ /home/wrq arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:3. 解压 arm-linux-gcc-3.4.1.tar.bz2 #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 解压过程需要⼀段时间,解压后的⽂件形成了 usr/local/ ⽂件夹,进⼊该⽂件夹,将arm⽂件夹拷贝到/usr/local/下 # cd usr/local/ #cp -rv arm /usr/local/ 现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下⾯了4. 修改环境变量,把交叉编译器的路径加⼊到PATH。
(有三种⽅法,强烈推荐使⽤⽅法⼀) ⽅法⼀:修改/etc/bash.bashrc⽂件#vim /etc/bash.bashrc在最后加上:export PATH=$PATH:/usr/local/arm/3.4.1/binexport PATH ⽅法⼆:修改/etc/profile⽂件:# vim /etc/profile增加路径设置,在末尾添加如下,保存/etc/profile⽂件:export PATH=PATH:/usr/local/arm/3.4.1/bin ⽅法三:#export PATH=PATH:/usr/local/arm/3.4.1/bin 注:(这只能在当前的终端下才是有效的!)5. ⽴即使新的环境变量⽣效,不⽤重启电脑: 对应⽅法⼀:#source /root/.bashrc 对应⽅法⼆:# source /etc/profile6. 检查是否将路径加⼊到PATH: # echo $PATH 显⽰的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加⼊PATH。
嵌入式交叉编译的环境
3 Samba服务
具体设置步骤 • 服务器端 1)关闭防火墙 (同NFS)
信息工程学院
2019/11/1
3 Samba服务
2)配置Samba 服务器
信息工程学院
2019/11/1
3 Samba服务
2-1)设置共享目录 和访问权限
信息工程学院
2019/11/1
3 Samba服务
② Source Insight
2019/11/1
嵌入式交叉编译环境
1 1嵌入式交叉编译环境
信息工程学院
2 2NFS服务
3 3Samba服务
4 4Windows和Linux混合开发模式
5 5GCC编译器
6 6GDB调试器
7 7Make工具的使用
8 8嵌入式交叉编译环境的搭建
2019/11/1
信息工程学院
GNU C 的使用 • 基本语法
gcc [options] [filenames] • 说明:
– 在gcc后面可以有多个编译选项,同时进行多个编译 操作。
• 当你不用任何选项编译一个程序时,GCC将会建立(假定 编译成功)一个名为a.out的可执行文件。
2019/11/1
信息工程学院
5 GCC编译器
• 是一个命令行的调试器,但gdb具有比很多图形 化调试器更强大的功能。
• 可以调试各种程序,包括 C,C++,JAVA,PASCAL等
• 具有远程调试功能-对嵌入式非常有用
2019/11/1
信息工程学院
6 GDB调试器
• Gdb主要可以完成下面任务: (1)启动程序,并可以指定某些参数控制程序的
运行 (2)可让被调试的程序在用户所指定的断点处停
嵌入式Linux的交叉编译环境的搭建共60页文档
31、只有永远躺在泥坑里的人,才不会再掉进坑里。——黑格尔 32、希望的灯一旦熄灭,生活刹那间变成了一片黑暗。——普列姆昌德 33、希望是人生的乳母。——科策布 34、形成天才的决定因素应该是勤奋。——郭沫若 35、学到很多东西的诀窍,就是一下子不要学很多。——洛克
嵌入式Linux的交叉编译环境的搭建
•
6、黄金时代是在我们的前面,而不在 我们的 后面。
•
7、心急吃不了热汤圆。
•
8、你可以很有个性,但某些时候请为失败找借口 (蹩脚 的工人 总是说 工具不 好)。
•
10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
嵌入式Linux的交叉编译环境的搭建
17
通讯工具---网络
(2)Windows下tftp服务配置
单击tftpd32下方的设置按钮,进入设置界面,主要配置tftp服务器 端地址,也就是本机的地址。 重新启动tftpd32软件使刚才的配置生效,服务器端的配置完成了 可以用直连线连接目标机和宿主机,在目标机上开启tftp服务进行 文件传输 。
14
通讯工具的使用---串口
超级终端和Minicom配置及使用
2.Minicom
首先在命令行中键入“minicom”,这就启动了minicom软件。 Minicom在启动时默认会进行初始化配置 CTRL+A Z,来查看minicom的帮助 CTRL-A O配置minicom的串口参数,选择“Serial port setup”子项 ,上面列出的配置是minicom启动是的默认配置,用户可以通过 键入每一项前的大写字母,分别对每一项进行更改。要对波特率 、数据位和停止位进行配置,键入“E”,在该配置界面中,可以 键入相应波特率、停止位等对应的字母,即可实现配置,配置完 成后按回车键就退出了该配置界面。在确认配置正确后,可键入 回车返回上级配置界面,并将其保存为默认配置。 可重新启动minicom使刚才配置生效,在连上开发板的串口线之 后,就可在minicom中打印出正确的串口信息
5
嵌入式开发环境搭建的内容
一、安装交叉编译器 二、使用通讯工具
1.
2.
使用串口 1. 超级终端的使用 2. Minicom的使用 使用通讯工具 1. TFTP方式 2. NFS方式
6
一、安装交叉编译器---安装cross tool
安装cross-tool 安装EABI工具(其中即包含交叉编译器等多种工 具) 以上二者皆可
建立交叉编译环境
随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。
在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。
这是一个由编译器、连接器和解释器组成的综合开发环境。
交叉编译工具主要由 binutils、gcc 和 glibc 几个部分组成。
有时出于减小 libc 库大小的考虑,你也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。
建立一个交叉编译工具链是一个相当复杂的过程,如果你不想自己经历复杂的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载。
下面我们将以建立针对arm的交叉编译开发环境为例来解说整个过程,其他的体系结构与这个相类似,只要作一些对应的改动。
我的开发环境是,宿主机 i386-redhat-7.2,目标机 arm。
这个过程如下1. 下载源文件、补丁和建立编译的目录2. 建立内核头文件3. 建立二进制工具(binutils)4. 建立初始编译器(bootstrap gcc)5. 建立c库(glibc)6. 建立全套编译器(full gcc)下载源文件、补丁和建立编译的目录1. 选定软件版本号选择软件版本号时,先看看glibc源代码中的INSTALL文件。
那里列举了该版本的glibc编译时所需的binutils 和gcc的版本号。
例如在 glibc-2.2.3/INSTALL 文件中推荐 gcc 用 2.95以上,binutils 用 2.10.1 以上版本。
我选的各个软件的版本是:linux-2.4.21+rmk2binutils-2.10.1gcc-2.95.3glibc-2.2.3glibc-linuxthreads-2.2.3如果你选的glibc的版本号低于2.2,你还要下载一个叫glibc-crypt的文件,例如glibc-crypt-2.1.tar.gz。
嵌入式操作系统实验一建立交叉编译环境
嵌入式操作系统实验报告姓名王威学号SA12226437 所在班级系统芯片实验名称实验一队友:张圣苗亚实验内容1、准备工作工作:安装virtualbox虚拟机工具,并安装ubuntu10.10系统、增强型工具,实现共享文件夹的自动挂载。
2、利用crosstool提供的脚本安装和相关资源编译面向的ARM的GCC工具。
详细内容1:安装虚拟机软件和虚拟机时要完成的主要步骤有:安装virtualbox,建立一台虚拟机,分配内存和硬盘,指定共享文件夹(主机和虚拟机可共同操作),指定操作系统镜像文件路径(相当于光盘,第一次启动时安装),安装虚拟操作系统,安装增强工具包,实现共享文件夹的自动挂载。
有几点需要注意:1、虚拟硬盘尽量分配大一些,之后再扩就比较麻烦。
2、共享文件夹不要有中文路径,不然挂载后看不到中文名称文件。
3、安装操作系统时,不能断网,需要下载各种资源,不然会异常。
详细内容2:安装gcc-4.1替换操作系统中的gcc-4.4.5,用它编译交叉编译器gcc-3.4.5和库文件glibc-2.3.2、gdb-6.5。
为了完成这样的目标,我们需要安装与脚本相关的工具,需要修改crosstool中的配置文件arm.dat以指定编译的目标位arm-linux。
需要修改crosstool中的脚本文件,指定编译的源文件和目的文件夹(后来建立),指定配置文件为gcc-3.4.5-glibc-2.3.2.dat,在该配置文件中,指定了交叉编译器和调试器、C库的版本。
最后运行脚本,实现了对GCC工具包的安装,包括gcc预处理器、汇编器、编译器、链接器、调试器、反汇编工具等等。
整个实验中我们需要的资源是crosstool-0.43.tar、gdb-6.5.tar、linux-2.6.8.tar,将放置在共享文件夹的crosstool工具拷贝到主文件夹下并解压,将gbd和linux文件拷贝到crosstool文件夹,拷贝linux-2.6.8.tar是因为编译时需要内核文件。
实验四_嵌入式Linux交叉开发环境的搭建
实验四嵌入式Linux交叉开发环境的搭建一实验目的1.明白交叉编译环境的意义2.能够独立搭建嵌入式交叉编译环境3.嵌入式交叉编译环境的使用二实验内容1.搭建嵌入式交叉编译环境2.嵌入式交叉编译环境的使用三实验步骤1.主机交叉开发环境的配置A.配置控制台程序Windows操作系统中有超级终端(HyperTerminal)工具;Linux/Unix操作系统有minicom (使用“minicom”命令启动该软件)等工具B.配置TFTP服务tftp是一个传输文件的简单协议,它基于UDP协议而实现。
此协议设计的时候是进行小文件传输的。
Linux下TFTP服务配置:vim /etc/xinetd.d/tftpservice tftp{socket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -s /tftpbootdisable = noper_source = 11cps = 100 2flags = IPv4}启动TFTP服务$ /etc/init.d/xinetd start关闭TFTP服务$ /etc/init.d/xinetd stop重启TFTP服务$ /etc/init.d/xinetd restart查看TFTP状态$ netstat –au | grep tftpProto Recv-Q Send-Q Local Address Foreign Address Stateudp 0 0 *:tftp *:*Windows下TFTP服务配置:在Windows下配置tftp服务需要安装使用tftp服务器软件,常见的可使用tftpd32,网上有很多下载该软件的地方,读者可以自行下载。
要注意的是,该软件是tftp的服务器端,而目标板上则是tftp的客户端C.NFS文件系统NFS为Network FileSystem的简称,最早是由Sun公司提出发展起来的,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文件。
第七章 嵌入式Linux交叉编译环境
这两个文件中列出的用户,会被禁止使用ftp 服务;将不希望被禁止的删除即可,如root 用户
虚拟机的设置
虚拟机的设置
虚拟机的设置
可以配置虚拟机现有硬件,或添加新的硬 件
硬盘(本地硬盘在Windows和Linux互访) 网络(实现Linux虚拟机上网) 串口(用于Linux主机与开发板通信)
设置IP(与windows主机同网段) 设置网关(同windows主机) 设置DNS(同windows主机)虚拟机 Nhomakorabea网络设置
虚拟机中网络设置
虚拟机中网络设置
需要设置内容
IP 网关 DNS
设置好后,可以解除网卡eth0,然后再激活, 来使新IP生效 当前IP设置,可用ifconfig命令查看
虚拟机的网络设置
虚拟机的网络设置
本系统为方便进行gdb远程调试,采用了 Bridged(桥接)方式。虚拟机IP统一配置 为192.168.254.100,为避免IP冲突,在可 访问外网时,不要启动虚拟机。 虚拟机仅供与实验箱直联,编译调试程序 时使用。
Bridged方式IP配置
设置好网络方式是Bridged后,类似与 windows主机的网络设置
Bootloader源代码编译
1 、在宿主 PC机端,打开一个终端窗口 (Terminal ),点击【红帽/System Tools/Terminal 】 启动终端窗口。首先我们找到BLOB BOOT, 默认是在文件夹 “/pxa270_D/boot/blob_ours/blob_xscale ”中, 如果是第一次编译,请您输入下列2 条命令: ① cd /pxa270_ D/boot /blob_ours/blobxscale ② make –f Makefile.cvs
构建嵌入式linux交叉编译环境
5 建立引导编译器( bootstrap gcc)
gcc 套件 只包 含了 一个 工具 程序 ( GNU 编 译 器) , 不过它还支持一些组件, 如运行时库。本阶段 将建立引导编译 器。该编译器只 能支持 C 语言。 等到 C 链接库编译好之后, 重新编译 gcc 才能提供 完整的 C+ + 支持。
基于Linux的嵌入式交叉编译环境的构建
基于Linux的嵌入式交叉编译环境的构建摘要嵌入式产品的大量应用和linux系统的日趋完善,使嵌入式linux系统的开发得到广泛的应用。
要进行嵌入式linux开发,搭建适合自身开发平台的交叉编译环境是首要任务。
嵌入式系统的可执行文件都是通过交叉编译生成的。
本文详细叙述了针对ARM S3C6410硬件平台的嵌入式linux交叉编译环境的构建方法,并通过测试,具有非常好的稳定性,为嵌入式linux开发打下良好的基础。
关键词ARM,Linux;交叉编译环境;GCC引言交叉编译环境是嵌入式开发的基础,在进行项目开发的时候必须搭建一套开发环境,完善的工具链可以保证项目开发的进度和质量。
因此我们根据自己的硬件设备搭建适合自己的编译环境,为后续的开发做好准备工作。
1 交叉编译技术编译器生成的目标代码,可以是在与编译器本身所在计算机相同的环境下运行的,这种编译方法叫做本地编译。
另外,目标代码也可以是在其他平台上运行的,这种编译方法叫做交叉编译。
简单的说,交叉编译就是在一个平台上生成可以在另一个平台上执行的代码,是嵌入式开发过程中的一项重要技术。
对于嵌入式Linux开发所采用的编译就是交叉编译。
它是在PC平台的Linux 系统下编译出能够在ARM开发板上运行的可执行程序,一般把PC机称为宿主机,开发板稱为目标机。
嵌入式Linux开发的流程如图1所示。
2 采用交叉编译的原因首先,在嵌入式系统开发的起始阶段,目标平台尚未建立,因此需要做交叉编译,来生成所需的BootLoader(系统启动引导程序)以及操作系统内核;其次,当目标平台能够启动之后,由于目标机资源有限,没有大的存储容量及丰富的人机接口,没有足够的资源提供编译过程使用,所以我们在高性能的宿主机中进行编译工作,把最终生成的可执行程序移植到目标平台上运行。
采用交叉编译的方法解决了嵌入式系统运算能力不足和存储容量有限的缺点。
3 构建交叉编译环境嵌入式行业的交叉编译环境有多种构建方法,而嵌入式开发人员往往需要根据自己的硬件条件来搭建适合的交叉编译环境。
嵌入式linux中建立交叉编译环境
建立交叉编译环境交叉编译的任务主要是在一个平台上生成可以在另一个平台上执行的程序代码。
不同的CPU需要有不同的编译器,交叉编译如同翻译一样,它可以把相同的程序代码翻译成不同的CPU对应语言。
交叉编译器完整的安装涉及到多个软件安装,最重要的有binutils、gcc、glibc三个。
其中,binutils主要用于生成一些辅助工具;gcc则用来生成交叉编译器,主要生成arm-linux-gcc 交叉编译工具;glibc主要是提供用户程序所使用的一些基本的函数库。
自行搭建交叉编译环境通常比较复杂,而且很容易出错。
可以使用厂家提供的交叉编译器,只需将交叉编译器解压到根目录下即可(厂家已经做好这步)。
步骤:设置系统环境变量:在linux shell终端输入如下命令export PATH=$PATH:/usr/local/arm/arm-2009q3/bin/这样,内核或其他应用程序均可以用arm-none-linux-gnueabi-来指定使用该交叉编译器。
自行编写一个程序测试:示例helloworld.c:#include <stdio.h>int main(void){printf("hello world\n");return 0;}然后在命令行执行如下语句开始编译:$ arm-none-linux-gnueabi-gcc helloworld.c -o helloarm用file命令查看下生成的helloworld程序的格式:$ file helloarm如果输出以下信息,说明编译成功。
helloworld: ELF 32-bit LSB executeable, ARM, version 1, dynamically linked (uses shared libs), not stripped注:如果使用如下的命令来编译该文件。
⏹[root@localhost root]# gcc –o hello helloworld.c⏹[root@localhost root]# file hello1 / 2helloworld: ELF 32-bit LSB executeable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped可发现是80386格式,可以在虚拟机中直接./hello运行而用arm-none-linux-gnueabi-gcc编译的helloarm程序,是无法在虚拟机里用./helloarm执行的,但可以在ARM开发板中运行。
linux交叉编译环境搭建步骤
linux交叉编译环境搭建步骤正文:在进行Linux交叉编译之前,我们需要先搭建好相应的交叉编译环境。
下面是搭建步骤的详细说明:步骤一:安装必要的软件包首先,我们需要安装一些必要的软件包,包括GCC、binutils、glibc 以及交叉编译工具链等。
可以通过包管理器来安装这些软件包,比如在Ubuntu上可以使用apt-get命令,CentOS上可以使用yum命令。
步骤二:下载交叉编译工具链接下来,我们需要下载相应的交叉编译工具链。
可以从官方网站上下载已经编译好的工具链,也可以通过源码自行编译得到。
下载好之后,将工具链解压到一个目录下。
步骤三:配置环境变量为了方便使用交叉编译工具链,我们需要将其添加到系统的环境变量中。
可以通过编辑.bashrc文件来实现,添加类似下面的内容:```shellexport CROSS_COMPILE=/path/to/cross-compiler/bin/arm-linux-export ARCH=arm```其中,/path/to/cross-compiler是你下载的交叉编译工具链的路径。
步骤四:测试交叉编译环境在配置好环境变量之后,我们可以通过简单的测试来验证交叉编译环境是否搭建成功。
比如,可以尝试编译一个简单的Hello World程序,并在目标平台上运行。
步骤五:编译其他软件当交叉编译环境搭建成功,并且测试通过之后,我们就可以使用这个环境来编译其他的软件了。
比如,可以使用交叉编译工具链来编译Linux内核、U-Boot引导程序、驱动程序等。
总结:搭建Linux交叉编译环境是进行嵌入式开发的基础工作之一。
在搭建好环境之后,我们可以使用交叉编译工具链来编译适配于目标平台的软件,从而实现在开发主机上进行开发和调试的目的。
嵌入式交叉编译开发环境
宿主机 Host
调试通道
目标机 Target
• 宿主机是一般的通用计算机,它通过串口或网络接口与目标机通信;在宿主
机上开发程序,并在宿主机上运行交叉编译器编译程序
• 目标机是一个arm-linux平台,由交叉编译器生成的程序将在目标机(Target)
上运行。 arm-linux平台
arm---指的是CPU是ARM9处理器 linux---指的是运行的Linux操作系统
嵌入式交叉编译开发环境
嵌入式交叉编译开发环境
2
交叉编译:在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运 行的代码,这个编译过程就叫交叉编译,简单地说:在一个平台(宿主机)上生 成另一个平台(目标机)上的可执行代码。
宿主机—通用计算机
目标机—嵌入式系统
3
嵌入式交叉编译开发环境
交叉编译开发环境:
7
混合开发模式的必要: 由于初学者对Linux系统不是很熟悉,通常会借用Windows下的强大编辑工具,
通过Windows与Linux共享,再在Linux系统下进行编译、调试等。 (1)Windows下的文本编辑工具 (2)Vmware虚拟机设置共享(安装虚拟机工具) (3)samba服务(提供Windows和Linux下程序共享) (4)nfs服务(提供Linux和Linux下程序的共享)
嵌入式交叉编译有3种情形:
6
(1)目标系统与宿主机处理器相同,运行不同的系统; (2)目标系统与宿主机处理器不同,运行相同的系统; (3)目标系统与宿主机处理器不同,运行不同的系统。
同一个体系结构可以运行不同的操作系统; 同一个操作系统也可以在不同的体系结构上运行。
Windows和Linux混合开发模式
嵌入式交叉编译环境的搭建
嵌入式交叉编译环境的搭建交叉编译的概念在第4 章中已经详细讲述过,搭建交叉编译环境是嵌入式开发的第一步,也是必备一步。
搭建交叉编译环境的方法很多,不同的体系结构、不同的操作内容甚至是不同版本的内核,都会用到不同的交叉编译器,而且,有些交叉编译器经常会有部分的BUG,这都会导致最后的代码无法正常地运行。
因此,选择合适的交叉编译器对于嵌入式开发是非常重要的。
交叉编译器完整的安装一般涉及到多个软件的安装(读者可以从ftp:///pub/下载),包括binutils、gcc、glibc等软件。
其中,binutils主要用于生成一些辅助工具,如objdump、as、ld 等;gcc 是用来生成交叉编译器,主要生成arm-linux-gcc 交叉编译工具(应该说,生成此工具后已经搭建起了交叉编译环境,可以编译Linux 内核了,但由于没有提供标准用户函数库,用户程序还无法编译);glibc 主要是提供用户程序所使用的一些基本的函数库。
这样,交叉编译环境就完全搭建起来了。
上面所述的搭建交叉编译环境比较复杂,很多步骤都涉及到对硬件平台的选择。
因此,现在提供开发板的公司一般会在附赠的光盘中提供该公司测试通过的交叉编译器,而且很多公司把以上安装步骤全部写入脚本文件或者以发行包的形式提供,这样就大大方便了用户的使用。
如优龙的开发光盘里就随带了2.95.3和3.3.2两个版本的交叉编译器,其中前一个版本是用于编译Linux2.4 内核的,而后一个版本是用于编译Linux2.6 版本内核的。
由于这是厂商测试通过的编译器,因此可靠性会比较高,而且与开发板能够很好地吻合。
所以推荐初学者直接使用厂商提供的编译器。
当然,由于时间滞后的原因,这个编译器往往不是最新版本的,若需要更新时希望读者另外查找相关资料学习。
本书就以优龙自带的cross-3.3.2 为例进行讲解(具体的名称不同厂商可能会有区别)。
安装交叉编译器的具体步骤在第2 章的实验二中已经进行了详细地讲解了,在此仅回忆关键步骤,对于细节请读者参见第2 章的实验二。
嵌入式应用系统开发--嵌入式Linux交叉编译环境的进一步搭建
2.1 交叉工具链cross-4.1.2.tar.bz2 包的安装
添加环境变量。
#gedit /etc/bashrc (打开设置环境变量文件) 在 /etc/bashrc 文件最后添加: export PATH=/usr/local/arm/4.1.2/bin:$PATH 存盘退出。交叉工具链安装完成。
思考:为什么要设置环境变量?
3. 远程访问目标板
当开发平台的 linux 系统运行起来之后,如何 观察应用程序在目标板的运行情况,即查看程 序的输出信息呢?
可以在开发平台上挂载 PC 机上的 NFS 共享 来实现开发平台与 PC 机的文件共享。
3. 远程访问目标板
但是在我们目前实际教学条件下难以满足,替 代的手段如下: 采用U盘挂载的方法,在host主机和ARM开发 板之间共享和交换文件。 采用超级终端、minicom 等串口工具进行文件 下载和运行结果监视。
使用超级终端传输文件
2. 在超级终端的菜单“传送”下,选择“发 送”,之后在弹出的对话框中,点击“浏览” 选择D:\mark\gdbserver,在“协议”下拉菜单 中选中“Xmodem‖。
见下图。
点击“发送”,windows开始发送,ARM实验板开始接 收。
使用超级终端传输文件
4 交叉调试器
嵌入式软件开发过程中的交叉调试与本地软件 开发过程中的调试方式有所差别。 本地软件开发: 调试器与被调试的程序往往运 行在同一台计算机上。调试器是一个单独运行 着的进程,它通过操作系统提供的调试接口来 控制被调试的进程。