实验一 交叉编译环境的建立和bootloader的使用

实验一交叉编译环境的建立和bootloader的使用
实验目的
1.建立嵌入式软件的交叉编译环境。

2.下载和使用bootloader。

实验内容
1.安装串口支持文件。

2.安装编译器。

3.安装bootloader。

4.下载内核并运行。

嵌入式LINUX开发环境有几个方案:
1.基于PC机WINDOWS操作系统下的CYGWIN;
2.在WINDOWS下安装虚拟机后,再在虚拟机中安装LINXUX操作系统;
3.直接安装LINUX操作系统。

基于WINDOWS的环境要么有兼容性问题,要么速度有影响,所以我推荐大家使用纯LINUX操作系统开发环境。

我们实际的开发环境为REDHAT9,它已经支持中文,并且包含了绝大部分的开发工具,不用担心装了LINUX就不能使用WINDOWS的问题。

一般的情况都是用户已经有了WINDOWS操作系统,再安装LINUX,LINUX会自动安装一个叫作GRUB的启动引导软件,可以选择引导多个操作系统。

绝大多数Linux 软件开发都是以native 方式进行的,即本机(HOST)开发、调试,本机运行的方式。

这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。

通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。

交叉编译调试环境建立在宿主机(即一台PC 机)上,对应的开发板叫做目标板。

运行Linux 的PC【宿主机】开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。

调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器提供的支持做出选择。

宿主机和目标板的处理器一般不相同,宿主机为Intel 处理器,而目标板如UP-NetARM2410-S 开发板为三星S3c2410.GNU 编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标机从而建立开发环境。

所以在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的PC
机作宿主开发机,对于嵌入式LINUX,宿主机上的操作系统一般要求为REDHAT LINUX。

嵌入式开发通常要求宿主机配置有网络,支持NFS(为交叉开发时mount 所用)。

然后要在宿主机上建立交叉编译调试的开发环境。

环境的建立需要许多的软件模块协同工作,这将是一个比较繁杂的工作,但现在已通过博创嵌入式教学套件中光盘的安装而自动完成了。

对开发PC 机的性能要求
由于Redhat9.0 安装后占用空间约为2.4G-5G 之间,还要安装ARM-LINUX 开发软件,因此对开发计算机的硬盘空间要求较大。

硬件要求:CPU:高于奔腾500M,推荐高于赛扬1.7G;内存:大于128M,推荐256M;硬盘:大于10G,推荐高于40G。

开发工具软件的安装与配置
1.REDHAT LINUX 9.0 的安装
在一台PC 上安装RedHatLINUX9.0,选择Custom 定制安装,在选择软件Package 时最好将所有包都安装,需要空间约2.7G,如果选择最后一项:everything,即完全安装,将安装3 张光盘的全部软件,需要磁盘空间大约5G。

因此建议提前为REDHAT LINUX 的安装预留大约5-15G的空间,具体视用户的硬盘空间大小来确定,在安装完Redhat后还要安装Linux的编译器和开发库以及ARM-Linux的所有源代码,这些包安装后的总共需要空间大约为800M。

2.开发工具软件的安装
将开发工具光盘插入CDROM,然后执行以下命令:
若系统不识别/dev/cdrom 的话,可以用如下命令,假设CDROM为从盘,即为/dev/hdb,则:
安装脚本程序将自动建立/arm2410s目录,并将所有开发软件包安装到
/arm2410s目录下,同时自动配置编译环境,建立合适的符号连接。

注意:安装完成后看一下主编译器Armv4l-unknown-linux-gcc 是否在
/opt/host/armv4l/bin/ ,如果不是这个路径,请使用vi 修改/root/.bash_profile 文件中PATH 变量为PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ ,存盘后执行:source /root/.bash_profile ,则以后armv4l-unknown-linux-gcc 会自动搜索到,可以在终端上输入armv ,然后按tab 键,会自动显示armv4l-unknown-linux- 3.开发环境配置
配置网络,包括配置IP地址、NFS服务、防火墙。

网络配置主要是要安装好以太网卡,对于一般常见的RTL8139 网卡,REDHAT9.0 可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。

然后配置宿主机IP为
192.168.0.121。

如果是在有多台计算机使用的局域网环境使用此开发设备,IP 地址可以根据具体情况设置。

如图3-1所示:
双击设备eth0的蓝色区域,进入以太网设置界面,如图3-2,3-3所示:
图3-2 以太网常规设置界面
图3-3 以太网路由设置界面
对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP 访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFS mount 它,许多网络功能都将无法使用。

因此网络安装完毕后,应立即关闭防火墙。

操作如下:点击红
帽子开始菜单,选择安全级别设置,选中无防火墙。

如图3-4所示:
图3-4 安全级别设置
在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables服务的勾去掉,并确保nfs选项选中。

配置NFS:点击主菜单运行系统设置->服务器设置->NFS服务器(英文为:SETUP->SYSTEM SERVICE->NFS),点击增加出现如下在界面,在目录(Drictory):中填入需要共享的路径,在主机(Hosts):中填入允许进行连接的主机IP地址。

并选择允许客户对共享目录的操作为只读(Read
-only)或读写(Read/write)。

如图3-5所示:
图3-6是对客户端存取服务器的一些其他设置,一般不需要设置,取默认值。

图3-6 NFS 用户访问设置
当将远程根用户当作本地根用户时, 对于操作比较方便,但是安全性较差。

最后退出时则完成NFS 配置。

配置好后,界面应显示如图3-7 所示:
图3-7 远程根用户当作本地根用户
图3-8 配置好的NFS
我们也可以手工编写/etc/exports文件,其格式如下:共享目录可以连接的主机(读写权限,其他参数)例如:
表示将本机的/arm2410s目录共享给ip地址为192.168.0.1-192.168.0.254的所有计算机,可以读取和写入。

配置完成后,可用如下办法简单测试一下NFS
是否配置好了:在宿主机上自己mount 自己,看是否成功就可以判断NFS 是否配好了。

例如在宿主机/目录下执行:
其中192.168.0.10应为主机的IP地址。

然后到/mnt/目录下看是否可以列出/arm2410s目录下的所有文件和目录,可以则说明mount 成功,NFS 配置成功。

配置MINICOM:
1.在linux 操作系统Xwindow 界面下建立终端(在桌面上点击右键——>新建终端),在终端的命令行提示符后输入minicom ,回车,你就会看到minicom 的启动画面(见图3-9)。

若没有启动Xwindow 则在命令行提示符后直接输入minicom 即可。

图3-9 minicom 启动画面
2.minicom 启动后,先按Ctrl+A 键,再按Z 键(注意不是连续按,Ctrl+A 松开后才按Z),进入主配置界面(见图3-10)。

按“O”进入配置界面,如图3-11 配置界面
图3-11 配置界面
按上下键选择Serial port setup,进入端口设置界面,这里有几个重要选项改为如下值(见图1.4.12):(在Change which setting 后按哪个字母就进入哪项的配置,如按A 进行端口号配置。

)A————Serial Device :/dev/ttyS0
(端口号使用串口1)E————BPS/par/bits :/115200 8N1 (波特率)
F,E 硬件流,软件流都改为NO,若要使用PC 机的串口2 来接板子的串口1 做监控,改为:/dev/ttyS1 即可。

3.选好后按ESC 键退出到图3-11 所示画面,选择Save setup as df1 保存退出,以后只要启动minicom 就是该配置,无需再做改动。

4.配置完成后,用串口线连接好pc 机和2410-S,启动2410-S,即可在minicom 上看到启动信息,并可以执行操作控制。

图3-12 端口设置界面
Linux开发软件的安装目录结构表格3-1 均以/arm2410s 目录为起点:
表3-1 /arm2410s 下的文件说明
编译器安装路径说明如表3-2所示:
表3-2 编译器安装路径说明
上述诸多程序的源代码都在光盘中提供. 在安装完成LINUX后,就是对LINUX 的网络环境的配置,最主要是配置NFS服务器。

合集下载

预备实验:交叉编译环境建立

预备实验:交叉编译环境建立

预备实验:交叉编译环境建立知识点储备:1、熟练掌握shell指令:sudo 、cd 、ls、tar、pwd、vim、source、export (阅读“Linux 系统命令及其使用详解”,完成附录一“Linux指令的随堂测试”)2、掌握添加环境变量的手段(参见附录二“关于在ubuntu下设置环境变量的三种方法”)3、掌握编写Makefile的方法(阅读“跟我一起写Makefile”,完成附录三的“Makefile的随堂测试”)4、关于64位ububuntu12.4系统安装32位依赖库的问题解答见附录四。

一、交叉编译的安装步骤:(cd 切换工作目录;pwd:查看当前目录路径;exit:退出root)1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是 /home/song/software,如下图,记住这个路径,等会还会用到。

(cd song后cd software)2、使用tar命令:tar -zxvf arm-linux-gcc-4.4.3.tar.gz将software文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下如下图通过下图可以看到解压成功了,并且解压后的文件存放在了/home/song/software/opt/FriendlyARM/toolschain/4.4.3文件夹下,如下图所示,这个存放路径可得记住,如下图(jack123@ubuntu:~/song/software/opt$ cd FriendlyARMjack123@ubuntu:~/song/software/opt/FriendlyARM$ cd toolschainjack123@ubuntu:~/song/software/opt/FriendlyARM/toolschain$ cd 4.4.3jack123@ubuntu:~/song/software/opt/FriendlyARM/toolschain/4.4.3$ lsjack123@ubuntu:~/song/software/opt/FriendlyARM/toolschain/4.4.3$ pwd/home/jack123/software/opt/FriendlyARM/toolschain/4.4.3)2:/home/jack123/software/opt/FriendlyARM/toolschain/4.4.3/bin3、接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。

BootLoader配置移植及编译实验

BootLoader配置移植及编译实验
在紧接这这行的下面添加下面几行: #ifdef CONFIG_S3C2410_NAND_BOOT
bl copy_myself #else
再找到 ble copy_loop
在它的下面添加一行: #endif
做这些工作就是要完成一个简单的功能:如果我们定义了 CONFIG_S3C2410_NAND_BOOT这个宏,那么就执行copy_myself这个子程序,否则 就执行#else下面的程序。copy_myself这个子程序的功能就是把U-Boot自身的代 码从Nand Flash拷贝到SDRAM中,需要我们自己实现,U-Boot自身并没有为我们 实现。
我们把copy_myself也添加在start.S文件中。找到下面的一行: _start_armboot: .word start_armboot
在这一行的下面添加如下的内容:
/*
*********************************************************************
@save return address to r10
ldr sp, DW_STACK_START
mov fp, #0
bl NF_Init
ldr r0, =UBOOT_RAM_BASE
mov r1, #0x0
mov r2, #0x30000
bl nand_read_whole
tst r0, #0x0
然后,修改Makefile,使得可以配置我们的开发板: # vi Makefile
在Makefile中找到下面两行: smdk2400_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0 紧接这这两行添加如下两行: eduk2410_config: unconfig @$(MKCONFIG) $(@:_config=) arm arm920t eduk2410 NULL s3c24x0 注意第二行开始部分的空白是按TAB键获得的!蓝色的部分显示了不同处! 这样,我们自己的板级支持包就建好了。

交叉编译和交叉调试环境搭建及使用

交叉编译和交叉调试环境搭建及使用

交叉编译和交叉调试环境搭建及使⽤交叉编译和交叉调试环境搭建及使⽤1. 交叉编译器1.1 交叉编译器介绍在⼀种计算机环境中运⾏的编译程序,能编译出在另外⼀种环境下运⾏的代码,我们就称这种编译器⽀持交叉编译。

这个编译过程就叫交叉编译。

简单地说,就是在⼀个平台上⽣成另⼀个平台上的可执⾏代码,⽽这种⼯具就是交叉编译器(cross compiler)。

1.2 搭建交叉编译环境1.2.1 实验环境交叉编译⼯具:arm-linux- 4.2.2编译平台:ubuntu10.10开发板类型:UT-S3C64101.2.2 搭建步骤1) 在/usr/local/下建⽴交叉编译器的安装⽬录arm:sudo mkdir /usr/local/arm2)将下载的交叉编译器包解压到/usr/local/arm⽬录下:sudo tar jxvf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm/3)解压成功后,修改PATH环境变量:sudo vim /etc/profile在⽂件为加⼊交叉编译器arm-linux-所在的路径:export PATH=$PATH:/usr/local/arm/4.2.2-eabi/usr/bin然后退出vim。

4) 更新⼀下配置⽂件/etc/profile:source /etc/profile5)检测是否安装成功:现在就可以使⽤交叉编译器了,写⼀个测试程序helloworld,交叉编译下,看是否能在开发板上运⾏。

i. 交叉编译测试程序arm-linux-gcc helloworld.c -o helloworldii.把⽣成的可执⾏⽂件helloworld复制到NFS的挂载⽬录下:sudo cp ./helloworld /nfsboot注意:本实验中开发板使⽤NFS挂载rootfs,nfsboot是NFS的挂载⽬录。

iii.在超级终端上运⾏:./helloworld执⾏结果:2. 交叉调试GDB的介绍和使⽤2.1 GDB是什么?GDB(GNU symbolic debugger) 简单的说是UNIX和LINUX下的⼀个调试⼯具。

嵌入式操作系统实验一建立交叉编译环境

嵌入式操作系统实验一建立交叉编译环境

嵌入式操作系统实验报告姓名王威学号SA12226437 所在班级系统芯片实验名称实验一队友:张圣苗亚实验内容1、准备工作工作:安装virtualbox虚拟机工具,并安装ubuntu10.10系统、增强型工具,实现共享文件夹的自动挂载。

2、利用crosstool提供的脚本安装和相关资源编译面向的ARM的GCC工具。

详细内容1:安装虚拟机软件和虚拟机时要完成的主要步骤有:安装virtualbox,建立一台虚拟机,分配内存和硬盘,指定共享文件夹(主机和虚拟机可共同操作),指定操作系统镜像文件路径(相当于光盘,第一次启动时安装),安装虚拟操作系统,安装增强工具包,实现共享文件夹的自动挂载。

有几点需要注意:1、虚拟硬盘尽量分配大一些,之后再扩就比较麻烦。

2、共享文件夹不要有中文路径,不然挂载后看不到中文名称文件。

3、安装操作系统时,不能断网,需要下载各种资源,不然会异常。

详细内容2需要安装与脚本相关的工具,需要修改crosstool中的配置文件arm.dat以指定编译的目标位arm-linux。

需要修改需要的资源实验步骤实验准备:在实验准备中,在安装完增强工具包(安装vmwaretools实现与XP文件共享)并重启之后,需要实现对共享文件夹的自动挂载,只需要修改etc目录中的配置文件rc.local,rc.local是很多linux系统管理员的偏爱,因为凡是需要随系统自动启动的服务、程序等,都可以放在里面。

$sudomkdir/mnt/share$sudomount-tvboxsfembedded/mnt/shared上面三句话实现了将共享文件夹embeded挂载到了share上。

gedit/etc/rc.local将第2句命令添加在exit之前,实现了自动挂载功能。

实验一一、搭建编译环境1、安装于脚本运行相关及其他的工具bison、flex、build-essential、patch、libncurses5-dev。

嵌入式交叉编译环境的建立和使用实验指导

嵌入式交叉编译环境的建立和使用实验指导

实验三:嵌入式交叉编译环境的建立和使用一、 实验目的1、熟悉和掌握在PC环境中生成和使用嵌入式交叉编译工具。

2、熟悉和掌握在PC环境中使用调试器对运行在嵌入式平台上的程序进行调试。

二、 实验硬件需求:1、w90p710开发板一套(电源,串口)。

2、J-Link调试器。

3、一台PC(Windows XP或者Win7)。

三、 实验软件需求:实验前会得到如图3- 1所示的软件工具包:图3- 1实验所需软件工具包其中每个文件夹的功用如下:cygwin:cygwin的离线下载安装包目录;demo:实验中用到的示例程序目录;software:实验中用到的软件安装程序所在目录;w90p710内核代码:实验中调试开发板内核所需的代码目录;交叉编译工具链:实验中搭建ARM开发环境所需的工具和源码所在目录;四、 实验内容:GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器,其不仅应用十分广泛而且源代码开源,可以移植到多种硬件平台。

本实验首先通过下载GNU官网提供的生成GCC所需的源代码,在Linux环境中编译生成ARM 编译开发工具链,然后使用编译得到的工具链生成可以在ARM平台中运行的程序。

GDB(the GNU Project Debugger)是GNU开源组织发布的一个强大的UNIX/Linux下的程序调试工具,用于实时的跟踪程序运行,观察或者修改程序运行情况,本实验将借助J-Link硬件调试器在w90p710开发板上运行和调试使用交叉编译工具生成的程序。

本实验主要由以下五部分组成:1、安装和配置Cygwin环境。

2、交叉编译生成ARM开发工具链。

3、使用ARM开发工具链编译示例程序。

4、搭建GDB调试环境。

5、使用GDB工具对运行在w90p710开发板上的程序进行在线调试。

注意:实验三和实验四中有底纹的字符是要在软件界面中手动输入的命令。

交叉编译环境的建立

交叉编译环境的建立

随着消费类电子产品的大量开发和应用和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。

linux学习之交叉编译环境

linux学习之交叉编译环境⼀在Linux上配置交叉编译环境:1. 根据芯⽚型号确定芯⽚指令集架构,并根据该架构选择合适的交叉编译⼯具2. 将交叉编译⼯具解压,添加到环境变量。

3. 编译⽬标⽂件,并想法设法将⽬标⽂件整到开发板上,有以下⽅法:将⽬标⽂件先整到windows PC下,拷贝到U盘/SD卡然后再插⼊开发板;⽤⽀持SSH的⼯具如putty登陆板⼦linux服务器;⽤NFS实现。

⼆ Uboot:⽤来启动内核(CPU不能直接从块设备中执⾏代码): 执⾏uboot代码,在uboot中把块设备中的内核代码复制到某内存地址处,然后再执⾏这个地址,即可启动内核。

uboot代码(uboot 根⽬录的spl⽂件夹u-boot-spl.bin和uboot根⽬录下u-boot.bin)需要⽤make(makefile配置+“.config”(make menuconfig图形化配置⼯具的输出⽂件))出来。

然后分别烧录进板⼦。

三编译kernel,并将其烧写进板⼦,启动板⼦后linux的shell环境应该跑起来了。

注意烧录内核的位置和内核运⾏环境: ramdisk根⽂件系统,这个⽂件系统是存在RAM⾥的,所以你在⾥⾯写⼊东西,⼀断电就没有了。

NAND Yaffs2⽂件系统:断电后还是存在的,使⽤busybox⽤来⽣成linux⽂件系统的⼏个基本⽂件夹,然后通过打包⼯具mkyaffs2,它⽤来⽣成能直接烧录到板⼦⾥的镜像⽂件,以下都是要烧写的⽂件。

Image Name Image Type Image start offsetu-boot-spl.bin uboot0x200u-boot.bin data 0x100000env.txt env0x80000970uImage data0x200000rootfs_yaffs2.img data 0x2000000四:将⾃⼰编写的程序的可执⾏⽂件拷贝到/opt⽬录下,并拷贝所需的库⽂件到/lib下,即可通过命令⾏来运⾏⽂件了。

交叉编译环境的配置与使用

交叉编译环境的配置与使用交叉编译是指在一个不同的开发环境中编译程序,以在目标平台上运行。

目标平台可以是不同的硬件架构、操作系统或操作系统版本。

交叉编译可以有效地减少在目标平台上进行开发和测试的时间,尤其是在限制了资源的嵌入式系统中。

配置交叉编译环境的步骤主要包括以下几个方面:1. 选择交叉编译工具链:交叉编译工具链是包含了交叉编译器、交叉链接器和相关工具的集合。

根据目标平台的特点,可以选择使用已有的工具链,或者自己构建定制的交叉编译工具链。

常见的交叉编译工具链有Cygwin、GCC等。

3.配置交叉编译环境:在配置交叉编译环境之前,首先需要确定目标平台和目标操作系统的相关信息,例如:处理器架构、操作系统版本、库文件位置等。

然后设置环境变量,包括设置交叉编译工具链的路径、目标平台和操作系统的相关信息。

4. 编写和编译代码:在配置好交叉编译环境后,可以使用常规的编程工具,如IDE或命令行工具,编写程序代码。

在编译时,需要使用交叉编译工具链中的编译器和相关工具来进行编译。

例如,使用交叉编译工具链中的gcc来代替本机的gcc进行编译。

5.链接和生成目标文件:编译成功后,会生成目标文件,即在目标平台上可以运行的可执行文件或库文件。

在链接时,需要使用交叉链接器来链接目标文件和相关库文件。

6.在目标平台上运行:将生成的目标文件复制到目标平台上,并通过目标平台的方式运行。

例如,在嵌入式系统中,可以通过串口或其他方式加载程序并运行。

1.确定目标平台和操作系统的要求:在进行交叉编译之前,需要确保了解目标平台和操作系统的相关要求,例如处理器架构、操作系统版本、库文件位置等。

这些信息将有助于选择合适的交叉编译工具链和配置交叉编译环境。

2.编写适用于目标平台的代码:在进行交叉编译时,需要注意编写适用于目标平台的代码。

例如,需要避免使用与目标平台不兼容的库函数和系统调用,以及考虑目标平台的资源限制等。

3.调试和测试:由于交叉编译环境和目标平台的不同,可能会遇到一些问题,如编译错误、链接错误或运行错误等。

2、交叉编译器的安装与使用


。
2
交叉编译器

பைடு நூலகம்
在一种平台上编译出能在另一种平台(体系结构不同)上运行的程序。 在PC 平台(X86 CPU)上编译出能运行在arm 平台上的程序,编译得到的 程序在X86 CPU。 X86平台上是不能运行的,必须放到arm 平台上才能运行。 用来编译这种程序的编译器就叫交叉编译器。 为了不跟本地编译器混淆,交叉编译器的名字一般都有前缀。例如: arm-linux-gcc。 需要交叉开发环境(Cross Development Env)的支持是嵌入式应用软 件开发时的一个显著特点。 交叉编译器只是交叉开发环境的一部分。 交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行 嵌入式应用软件的环境有 所不同,通常采用宿主机-目标机模式。
4
交叉编译器环境搭建
5
交叉编译器环境搭建
6
交叉编译器的安装
7
GNU gcc编译器及其使用
C 、C++源代码 编译 连接
可执行程序
hello.c
GNU gcc编译器的编译流程



gcc hello.c -o hello_pc // 用gcc编译器编译hello.c源程序, //生成可以在X86 CPU上的可执行程序hello_pc arm-linux-gcc hello.c -o hello_arm // 用arm-linux-gcc交叉编译器, //生成可以在arm s3c2440 CPU上的可执行程序hello_arm
9

gcc –c main.c(生成main.o目标文件) gcc –c A.c(生成A.o目标文件 ) gcc –c B.c (生成B.o目标文件 ) gcc –o main main.o A.o B.o 最后根据main.o、 A.o 、B.o这3个目标文件, 才能生成main可执行二进制程序。

实验1 交叉编译工具链建立实验

实验1 交叉编译工具链建立实验1.1 实验目的∙熟悉Linux操作系统;∙掌握交叉编译工具链的建立过程;∙掌握通过gdb调试程序的方法;∙掌握makefile文件的写法。

1.2 实验设备∙硬件:PC机;∙软件:Windows操作系统、VMware虚拟机和Linux操作系统,或直接安装于硬盘的Linux操作系统,arm-linux-gcc安装文件。

1.3 实验内容∙安装Linux操作系统;∙建立交叉编译工具链;∙编写解决八皇后问题的程序。

1.4 实验原理1.4.1 交叉编译工具链的简介交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程式,例如我们试验中在Linux平台上编译出能运行在ARM为内核的CPU平台上的程式,编译得到的可执行文件是不能在Linux环境下运行的,必须放到ARM平台上才能运行。

这种方法在异平台移植和嵌入式研发时非常有用的。

交叉编译工具链是由编译器、连接器和解释器组成的综合研发环境,交叉编译工具链主要由binutils、gcc和glibc三个部分组成。

有时出于减小libc库大小的考虑,也能用别的C 库来代替glibc,例如uClibc、dietlibc和newlib。

1.4.2 交叉编译工具链部分组件的介绍GCC属于GUN工具链中的编译开发工具,它可以把源程序编译为可执行文件。

GCC是支持支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等的编译器。

GCC是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

GCC主要包括:∙cpp:GNU C编译器的预处理器∙gcc:符合ISO标准的C编译器∙g++:基本符合ISO标准的C++编译器∙gcj:GCC的java前端∙gnat:GCC的GNU ADA 95的前端binutils是一组二进制工具程序集合,是辅助GCC的主要软件,其中主要包括:∙as:GNU汇编器∙ld:GNU链接器∙ar:创建归档文件,向库中添加/提取obj文件∙nm:列出obj文件中的符号∙objcopy:复制和转化obj文件∙objdump:显示对象文件的信息∙ranlib:根据归档文件中的内容建立索引∙readelf:显示elf格式执行文件中的各种信息∙size:显示object文件和执行文件各段的总大小∙strings:显示文件中可以打印的字符∙strip:去掉执行文件中多余的信息(如调试信息)∙gprof:用来显示图表档案数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档