实验三交叉编译环境的搭建.doc_第1页
实验三交叉编译环境的搭建.doc_第2页
实验三交叉编译环境的搭建.doc_第3页
实验三交叉编译环境的搭建.doc_第4页
实验三交叉编译环境的搭建.doc_第5页
全文预览已结束

下载本文档

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

文档简介

实验三 交叉编译环境的搭建一、实验目的1、 掌握使用crosstool-0.43脚本创建交叉编译环境的方法2、掌握搭建不同版本的Linux内核的交叉编译环境的方法3、掌握在Linux系统中查看各种软件版本的方法二、实验原理ARM芯片搭建的硬件开发平台本身不具有编译能力,编译工作只能由PC机上的Linux系统或PC机上用虚拟机安装的Linux系统担任,为了能开发出能在ARM硬件环境下运行的程序,PC机上的Linux系统或PC机上用虚拟机安装的Linux系统需要安装交叉编译环境,编译出ARM硬件环境能运行的程序。ARM硬件环境要运行PC机上的Linux系统或PC机上用虚拟机安装的Linux系统开发出的程序,需通过网络文件共享系统进行,通过文件共享的方式将PC机上的Linux系统或PC机上用虚拟机安装的Linux系统开发出的程序共享到ARM硬件平台上。三、实验步骤1、相关软件的准备1.1 运行环境介绍PC机安装虚拟机VMware10.0、PC机Linux系统为RedHat AS5,、PC机Linux内核版本Linux2.6.34、PC机Linux系统gcc编译器版本为gcc-4.1.2、ARM硬件平台CPU为s3c2410、ARM硬件平台Linux内核版本为Linux。1.2交叉编译器所需资源及下载地址【binutils-2.16.1.tar.bz2】 /gnu/binutils/【glibc-2.3.2.tar.bz2】 /gnu/glibc/【glibc-linuxthreads-2.3.2.tar.bz2】 /gnu/glibc/【linux-.tar.bz2】 /pub/linux/kernel/v2.6/【gdb-6.5.tar.bz2】 /gnu/gdb/【gcc-4.1.1.tar.bz2】 /gnu/gcc/gcc-4.1.1/【gcc-3.3.6.tar.bz2】 /gnu/gcc/gcc-3.3.6/【linux-libc-headers-.tar.bz2】/gnu/binutils/【crosstool-0.43.tar.bz2】 /crosstool2、安装环境准备2.1crosstool-0.43的准备将下载好的crosstool-0.43.tar.bz2文件复制到/opt目录下,操作步骤为:1、确定虚拟机Linux系统samba服务器配置完成且自动挂载windows下的某个盘。2、将crosstool-0.43.tar.bz2文件放在windows下的某个盘中。3、在虚拟机Linux中的/mnt/hgfs/下能看到windows的盘符。4、将crosstool-0.43.tar.bz2文件复制到/opt目录下,命令为:#cp /mnt/hgfs/(windows disk)/ crosstool-0.43.tar.bz2 /opt/ 例:crosstool-0.43.tar.bz2文件放在windows下D盘的task3文件夹下,操作为:#cp /mnt/hgfs/D/task3/ crosstool-0.43.tar.bz2 /opt/ -R5、复制完成后解压该文件,命令为:#cd /opt#tar jxvf crosstool-0.43.tar.bz2解压完成后在/opt/下就存在一个crosstool-0.43文件夹。6、将crosstool-0.43文件夹改名为crosstool,命令为:#mv crosstool-0.43 crosstool(当前路径为:/opt/)7、更改crosstool所属用户为非当前非root用户,命令为:#sudo chown R 当前普通用户名:当前普通用户名 crosstool(当前路径为:/opt/)例:当前普通用户为:scs,则命令为:# sudo chown R scs:scs crosstool2.2 其他相关软件的准备1、在普通用户的文件夹下新建一个名为downloads的文件夹,命令为:#mkdir /home/普通用户文件夹/downloads例:当前普通用户为scs# mkdir /home/scs/downloads2、将上述准备的相关文件复制到这个文件夹内,命令为:#cp /mnt/hgfs/D/task3/binutils-2.16.1.tar.bz2 ./(当前路径为downloads下)#cp /mnt/hgfs/D/task3/ glibc-2.3.2.tar.bz2 ./(当前路径为downloads下)#cp /mnt/hgfs/D/task3/ glibc-linuxthreads-2.3.2.tar.bz2 ./(当前路径为downloads下)#cp /mnt/hgfs/D/task3/ linux-.tar.bz2 ./(当前路径为downloads下)#cp /mnt/hgfs/D/task3/ gcc-4.1.1.tar.bz2 ./(当前路径为downloads下)#cp /mnt/hgfs/D/task3/ gcc-3.3.6.tar.bz2 ./(当前路径为downloads下)3、将复制在downloads下的文件全部解压,命令为:#tar jxvf binutils-2.16.1.tar.bz2 (当前路径为downloads下,其他文件同此)2.3相关文件的修改1.修改demo-arm9tdmi.sh文件进入/opt/crosstool/下,打开demo-arm9tdmi.sh文件,命令为:#vi demo-arm9tdmi.sh就可以查看demo-arm9tdmi.sh文件里面的内容为:#!/bin/sh# This script has one line for each known working toolchain# for this architecture. Uncomment the one you want.# Generated by generate-demo.pl from buildlogs/all.dats.txtset -exTARBALLS_DIR=/home/xxxx/download#这里相关准备软件的存放目录 RESULT_TOP=/opt /crosstool#这里是你生成一系列文件的目录,相当于脚本编译后生成文件的所在目录export TARBALLS_DIR RESULT_TOPGCC_LANGUAGES=c,c+export GCC_LANGUAGES# Really, you should do the mkdir before running this,# and chown /opt/crosstool to yourself so you dont need to run as root.#此句提醒编译时不要用root用户编译,要用普通用户编译mkdir -p $RESULT_TOP#eval cat arm9tdmi.dat gcc-2.95.3-glibc-2.1.3.dat sh all.sh -notest#eval cat arm9tdmi.dat gcc-2.95.3-glibc-2.2.2.dat sh all.sh -notest#eval cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat sh all.sh -notesteval cat arm9tdmi.dat gcc-4.1.1-glibc-2.3.2.dat sh all.sh -notest#注意这里只留下这一项不被注释掉,若你多留几项那些都要编译的,我们需要的就是gcc-4.1.1和glibc-2.3.2版本的编译器,编译出来的就是4.1.1版本。echo Done.2然后修改gcc-4.1.1-glibc-2.3.2.dat,就是刚才留下没有注释掉的那项。BINUTILS_DIR=binutils-2.16.1#注意当中的这几句,这些就是编译时所需的文件GCC_CORE_DIR=gcc-3.3.6GCC_DIR=gcc-4.1.1GLIBC_DIR=glibc-2.3.2LINUX_DIR=linux-#这项根据你要为哪个版本的内核编译工具,我们arm硬件上烧写的是linux,所以这里就要选择linux-,并且要把对应的内核文件放在downloads里。LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2GDB_DIR=gdb-6.53.修改arm9tdmi.dat:KERNELCONFIG=pwd/arm.configTARGET=arm-linux#该名称为交叉编译器目标名称,默认编译出来的名字为:arm-unknow-linux-gnu 我们习惯用arm-linux-gcc,这里就修改成arm-linux,修改了后要注意了相关目录的权限TARGET_CFLAGS=-O4.修改glibc-2.3.3-allow-gcc-4.0-configure.patch如果这个文件不修改,就编译不出交叉编译工具,因为我们用pc-linux系统gcc编译工具版本都会很高,而crosstool在执行gcc编译时要进行gcc版本匹配,过高的gcc版本不支持。进入/opt/crosstool/patches/glibc-2.3.2目录下,命令为:#cd /opt/crosstool/patches/glibc-2.3.2找到glibc-2.3.3-allow-gcc-4.0-configure.patch文件,并打开它,命令为:#vi glibc-2.3.3-allow-gcc-4.0-configure.patch打开后会看到gcc编译时所支持的gcc版本为:3.2-9*|4.01*,我们的gcc版本为gcc-4.1.2(注:查看gcc版本命令为:gcc v),在这里可以不用修改,但是以后如果所用的gcc的版本变高,必须修改此项,修改为:3.2-9*|4.,即支持gcc-4.x.x的版本。2.4 执行编译当前操作目录为:/opt/crosstool/,执行编译。命令为:$./demo-arm9tdmi.sh这时系统开始编译,这个过程比较长,如果你没有下载上面的那些软件或者那些软件放置的文件夹不对,都需要重新下载,时间很长。如果都下好切放置目录没问题,我的虚拟机整个编译过程大概1个多小时。如果没有报错,这时在/opt/crosstool/会生成gcc-4.1.1-glibc-2.3.2文件夹,此文件夹里就是我们交叉编译器的地址。进入gcc-4.1.1-glibc-2.3.2/arm-linux/bin文件夹就可以看见我们的交叉编译器。2.5 使交叉编译器生效打开bashrc文件,命令为:#vi /etc/bashrc (redhat linux-2.6.34的bas

温馨提示

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

评论

0/150

提交评论