《2022年实验三交叉编译环境的搭建资料 .pdf》由会员分享,可在线阅读,更多相关《2022年实验三交叉编译环境的搭建资料 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验三交叉编译环境的搭建一、实验目的1、 掌握使用crosstool-0.43脚本创建交叉编译环境的方法2、掌握搭建不同版本的Linux内核的交叉编译环境的方法3、掌握在Linux系统中查看各种软件版本的方法二、实验原理ARM 芯片搭建的硬件开发平台本身不具有编译能力,编译工作只能由PC 机上的 Linux系统或 PC 机上用虚拟机安装的Linux系统担任, 为了能开发出能在ARM 硬件环境下运行的程序, PC 机上的 Linux系统或 PC 机上用虚拟机安装的Linux系统需要安装交叉编译环境,编译出ARM 硬件环境能运行的程序。ARM 硬件环境要运行PC 机上的 Linux系统或 PC 机
2、上用虚拟机安装的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内核版本为Linux2.6.24.4。1.2 交叉编译器所需资源
3、及下载地址【binutils-2.16.1.tar.bz2】http:/ftp.gnu.org/gnu/binutils/ 【glibc-2.3.2.tar.bz2】http:/ftp.gnu.org/gnu/glibc/ 【glibc-linuxthreads-2.3.2.tar.bz2】http:/ftp.gnu.org/gnu/glibc/ 【linux-2.6.24.4.tar.bz2】http:/ftp.kernel.org/pub/linux/kernel/v2.6/ 【gdb-6.5.tar.bz2】http:/ftp.gnu.org/gnu/gdb/ 【gcc-4.1.1.ta
4、r.bz2】http:/ftp.gnu.org/gnu/gcc/gcc-4.1.1/ 【gcc-3.3.6.tar.bz2】http:/ftp.gnu.org/gnu/gcc/gcc-3.3.6/ 【linux-libc-headers-2.6.12.0.tar.bz2】http:/ftp.gnu.org/gnu/binutils/ 【crosstool-0.43.tar.bz2】http:/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - -
5、 - - - 2、安装环境准备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.t
6、ar.bz2 /opt/ 例: crosstool-0.43.tar.bz2文件放在windows下 D 盘的 task3文件夹下,操作为:#cp /mnt/hgfs/D/task3/ crosstool-0.43.tar.bz2 /opt/ -R 5、复制完成后解压该文件,命令为:#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、7、更改 crosstool所属用户为非当前非root用户,命令为:#sudo chown R 当前普通用户名:当前普通用户名crosstool(当前路径为: /opt/) 例:当前普通用户为:scs ,则命令为:# sudo chown R scs:scs crosstool 2.2 其他相关软件的准备1、在普通用户的文件夹下新建一个名为downloads的文件夹,命令为:#mkdir /home/普通用户文件夹/downloads 例:当前普通用户为scs # mkdir /home/scs/downloads 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
8、- - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 2、将上述准备的相关文件复制到这个文件夹内,命令为:#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下)
9、#cp /mnt/hgfs/D/task3/ linux-2.6.24.4.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-arm
10、9tdmi.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.txt set -ex TAR
11、BALLS_DIR=/home/xxxx/download #这里相关准备软件的存放目录RESULT_TOP=/opt /crosstool #这里是你生成一系列文件的目录,相当于脚本编译后生成文件的所在目录export TARBALLS_DIR RESULT_TOP GCC_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
12、.#此句提醒编译时不要用root用户编译,要用普通用户编译mkdir -p $RESULT_TOP #eval cat arm9tdmi.dat gcc-2.95.3-glibc-2.1.3.dat sh all.sh -notest 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - #eval cat arm9tdmi.dat gcc-2.95.3-glibc-2.2.2.dat sh all.sh -notest #eval
13、cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat sh all.sh -notest eval 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#注
14、意当中的这几句,这些就是编译时所需的文件GCC_CORE_DIR=gcc-3.3.6 GCC_DIR=gcc-4.1.1 GLIBC_DIR=glibc-2.3.2 LINUX_DIR=linux-2.6.24.4 #这项根据你要为哪个版本的内核编译工具,我们 arm硬件上烧写的是linux2.6.24.4,所以这里就要选择linux-2.6.24.4,并且要把对应的内核文件放在 downloads里。LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0 GLIBCTHREADS_FILENAME=glibc-linuxthreads-2
15、.3.2 GDB_DIR=gdb-6.5 3. 修改 arm9tdmi.dat:KERNELCONFIG=pwd/arm.config TARGET=arm-linux #该名称为交叉编译器目标名称,默认编译出来的名字为:arm-unknow-linux-gnu 我们习惯用arm-linux-gcc,这里就修改成arm-linux,修改了后要注意了相关目录的权限TARGET_CFLAGS=-O 4. 修改 glibc-2.3.3-allow-gcc-4.0-configure.patch 如果这个文件不修改,就编译不出交叉编译工具,因为我们用pc-linux系统 gcc 编译工具版本都会很高,
16、而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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
17、- - - - - 第 4 页,共 5 页 - - - - - - - - - 打开后会看到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 这时系统开始编译,这个过程比较长, 如果你没有下载上面的那些软件或者那些软件放置的文件夹不对,都需要重
18、新下载,时间很长。如果都下好切放置目录没问题,我的虚拟机整个编译过程大概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的 bashrc在/etc/下) 在最后加上两句为:export PATH=$PATH:/opt/crosstool/gcc-4.1.1
19、-glibc-2.3.2/arm-linux/bin export PATH 保存退出,这两句就是把交叉编译的环境变量加入,路径就是我们存放交叉编译器的路径。执行命令使环境变量生效,命令为:#source /etc/bashrc 重启 linux系统,使其生效。测试一下交叉编译器,命令为:#arm-linux-gcc v 如果一切正常,就会在终端上打印出arm-linux-gcc的版本。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -