预备实验:交叉编译环境建立.doc_第1页
预备实验:交叉编译环境建立.doc_第2页
预备实验:交叉编译环境建立.doc_第3页
预备实验:交叉编译环境建立.doc_第4页
预备实验:交叉编译环境建立.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

预备实验:交叉编译环境建立知识点储备:1、 熟练掌握shell指令:sudo 、cd 、ls、tar、pwd、vim、source、export(阅读“Linux 系统命令及其使用详解”,完成附录一“Linux指令的随堂测试”)2、 掌握添加环境变量的手段(参见附录二“关于在ubuntu下设置环境变量的三种方法”)3、 掌握编写Makefile的方法(阅读“跟我一起写Makefile”,完成附录三的“Makefile的随堂测试”)4、 关于64位ububuntu12.4系统安装32位依赖库的问题解答见附录四。1、 交叉编译的安装步骤:(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文件夹下,如下图所示,这个存放路径可得记住,如下图(jack123ubuntu:/song/software/opt$ cd FriendlyARMjack123ubuntu:/song/software/opt/FriendlyARM$ cd toolschainjack123ubuntu:/song/software/opt/FriendlyARM/toolschain$ cd 4.4.3jack123ubuntu:/song/software/opt/FriendlyARM/toolschain/4.4.3$ lsjack123ubuntu:/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中去,这样就可以在任何目录下使用这些工具。记下上一步中的安装路径,使用命令:vi /etc/profile 编辑profile文件,添加环境变量。(或sudo gedit /etc/bash.bashrc:if -d /home/jack123/software/opt/FriendlyARM/toolschain/4.4.3 ; thenPATH=/home/jack123/software/opt/FriendlyARM/toolschain/4.4.3/bin:$PATHfi)(exportPATH=/opt/EmbedSky/4.3.3/bin:$PATH)在profile中最后一行添加:export(此处一个空格接下一行)PATH=$PATH:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin 这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图32行编写完保存就好了4、使用命令:source /etc/profile 使环境变量生效5、在终端上输入命令 arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了6、使用命令:arm-linux-gcc -v 会出现下面的错误提示:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found说是出现这种问题的原因是由于Ubuntu12.04用的是64位的,解决方法就是使用命令:sudo apt-get install ia32-libs 装一些32位的库7、待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图8、验证,编译一个hello.c文件使用命令:arm-linux-gcc hello.c -o hello 看是否编译成功可见成功生成了二进制文件。64位:这种情况是因为你的操作系统是Ubuntu 64位的,而交叉编译工具链都是32位执行程序。要成功运行这些交叉编译工具链,需要与这些工具链相关的32位库。安装命令如下:1sudoapt-getinstalllibc6:i386libstdc+6:i386libncurses5:i386zlib1g:i386二、设备驱动的安装在实验之前需要安装两种驱动,分别是USB转串口驱动和 USB下载驱动。(1)USB转串口驱动现在很多的电脑都没有串口了,对于我们开发人员来说,只能购买一个 USB 转串口,本文对 USB 转串口在ARM 开发板上的使用做一个简单的介绍:首先我们需要安装 USB 转串口的驱动,打开设备管理器,右击端口,选择“更新驱动程序软件”如图所示:会出现如何搜索驱动程序软件?选择“浏览计算机查找”并找到解压后的“USB转串口驱动”目录,选择目录下的,点击进行安装,安装完成即可,若安装不成功则禁用端口,并以管理员身份运行windows 7_vista_32_64目录下的进行安装驱动。安装完成以后,接上 USB 转串口,这时在我的电 脑的设备管理器中,我们可以看到它,如下图所示:这时我们看到的是,但有时候我们看到COM号是大于4的,改成COM1-4,更改方案:右键端口,选择“属性”选项,点击“端口设置”“高级”注意左下角的就是我们需要更改的端口号,改成COM1-4任何中的一个。(2)UBS下载驱动插入下载线后,设备管理器会出现其他设备,按以上方面点击右键选择“更新程序软件驱动”选择浏览路径,选择解压后的文件路径到,并安装,选择“始终安装”。三、代码的编写以及烧录插入USB接口和串口转USB接口,按ARM板上RESET键若驱动安装良好,则最上方显示 串口名 以及 连接成功此时出现如图程序按a键进入下载,点击USB下载uboot选择对应的二进制文件即可片刻即可下载成功附录一:随堂练习-linux 常用指令1. 利用sudo -s 指令切换到root用户2. 利用pwd显示当前路径3. 利用ls -l指令列出当前文件夹下的各个文件的属性4. 将路径切换到opt目录之下 cd /opt5. 在opt目录下新建arm 文件夹,并修改属性,使其具有可读写可执行的权限创建文件夹:mkdir arm;具有可读写可执行:sudo chmod 777 /opt/arm6. 在arm 文件夹下,利用vim编写hello.c 文件,输入以下内容,并保存退出Qw 保存 shift+zz 退出7. #include main()printf(Hello World!n);8. 在opt 目录下新建tmp文件夹,将步骤5编写的hello.c 文件拷贝到tmp文件夹下:mkdir tmp cp -i hello.c /opt/tmp9. 将tmp 文件夹压缩为tmp.tgz (# tar cvfz tmp.tgz tmp)10. 删除tmp 文件夹 rm -r tmp11. 将tmp.tgz解压缩到当前文件夹下(tar -zxvf tmp.tgz)12. 进入tmp 文件夹,利用cat、 more、 less 指令查看hello.c,体会区别Cat(#include main() printf(Hello World!n);)More(同上)less (#include main()printf(Hello World!n);hello.c (END)13. 利用date 指令查看当前的时间 六 3月 4 22:28:30 CST 201714. 利用date 指令设置当前时间 date -date 12:34:5615. 利用ps指令显示当前的进程号 PID TTY TIME CMD 5156 pts/9 00:00:00 su 5157 pts/9 00:00:00 bash 5312 pts/9 00:00:00 ps16. 利用Kill指令删除某一运行的进程bash: kill: (456) - No such processKill 对应PID pkill对应的com17. 利用echo指令输出一段字符串“#It is add”到hello.c 文件中/opt/tmp# echo #It is add hello.c输入18. 利用export 指令查看环境变量$PATHbash:export:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games: not a valid identifier19. 利用find命令查找/opt 目录下所有的c 文件/opt/opt/arm/opt/arm/hello.c/opt/arm/.hello.c.swp/opt/tmp/opt/tmp/hello.c/opt/tmp.tgzfind /opt -name *.c20. 用ctrl+c 中止进程CTRL-Z和CTRL-C都是中断命令,但是他们的作用却不一样.CTRL-C是强制中断程序的执行,而CTRL-Z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.21. 用mount 指令挂载u盘1.在插入U盘前和插入U盘后,都输入同一个命令,检查多了哪个盘cat /proc/partitions这里我发现多了8 16 7827424 sdb8 17 7825423 sdb1sdb是统称,所以新插入的U盘就是/dev/sdb12.用命令检查新的U盘的文件系统格式root www :/# fdisk -l /dev/sdbDisk /dev/sdb: 8015 MB, 8015282176 bytes247 heads, 62 sectors/track, 1022 cylinders, total 15654848 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x0001fce0Device Boot Start End Blocks Id System/dev/sdb1 * 62 15650907 7825423 c W95 FAT32 (LBA)看到这里是FAT32格式。3.mountmount -t vfat /dev/sdb1 /media/usb注意:mount -t 按两次tab键会提示输入什么文件系统类型/media/usb是我自己创建的目录4.umount 移除/umount /media/usb22. 试编写shell 指令脚本vimhello.sh进入vim后按i键,然后输入Perl code?12#!/bin/bashechoHelloworld!然后shift+z两次(保存)在命令行输入:chmod+xhello.sh(赋予执行权限)运行:./hello.sh附录二:在ubuntu下设置环境变量有三种方法一、临时设置export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH二、当前用户的全局设置$ vim /.bashrc,添加行:export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH使生效$ source .bashrc三、所有用户的全局设置$ vim /etc/profile在里面加入:export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH使生效$ source profile测试当前的环境变量;输入 $ echo $PATH ,查看输出是否已包含路径*用户登录后加载profile和bashrc的流程如下:1)/etc/profile-/etc/profile.d/*.sh2)$HOME/.bash_profile-$HOME/.bashrc-/etc/bashrc说明:bash首先执行/etc/profile脚本,/etc/profile脚本先依次执行/etc/profile.d/*.sh随后bash会执行用户主目录下的.bash_profile脚本,.bash_profile脚本会执行用户主目录下的.bashrc脚本,而.bashrc脚本会执行/etc/bashrc脚本至此,所有的环境变量和初始化设定都已经加载完成.bash随后调用terminfo和inputrc,完成终端属性和键盘映射的设定.PATH变量特殊说明一下:1、如果是超级用户登录,在没有执行/etc/profile之前,PATH已经设定了下面的路径:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin2、如果是普通用户,PATH在/etc/profile执行之前设定了以下的路径:/usr/local/bin:/bin:/usr/bin*关于ubuntu14.04以上版本的环境变量修改可参考:/ITBread/p/3925014.html/linux/14436.html附录三 Makefile的随堂测试1、输入书中P32的例子,运行gcc变量2、了解Makefile中变量的赋值方法,说明“=、:=、?=、+=”的区别3、参考书中P51页Makefile的写法,重新对P32的例子编译,并注释P52页例子中Makefile的每条语句附录四:关于64位ububuntu12.4系统安装32位依赖库的问题解答Q:在ubuntu12.04上,要运行32的程序,需要安装32位的兼容库。会遇到如下问题:以前在10.04上成功安装过,方法是sudo apt-get install ia32-libs但是在12.04上遇到了困难,遇到下面这种错误$ sudo apt-get install ia32-libs正在读取软件包列表. 完成正在分析软件包的依赖关系树 正在读取状态信息. 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件包尚未被创建或是它们已被从新到(Incoming)目录移出。下列信息可能会对解决问题有所帮助:下列软件包有未满足的依赖关系:ia32-libs : 依赖: ia32-libs-multiarchE: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系网上也没有找到合适的方法。A:安装需要的32位库,输入如下命令:$ sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc+5:i386 libstdc+6:i386Q:还是出现问题,例如还是有些安装包安装不上。:更新自带的源1、 更新ia32-libs软件装好ubuntu系统后的第一见事就是替换自带的更新源,原因是系统自带的源有些在中国访问不了,可以访问的速度又特别慢。幸好国内的一些公司和大学提供了速度不错的更新源。下面介绍如何使用更快的更新源百度经验:方法/步骤:1. 1备份sources.list文件(其中opt/etc-apt-source.list为备份路径):cp /etc/apt/sources.list opt/etc-apt-source.list2. 2打开sources.list:sudo gedit /etc/apt/sources.list3. 3修改sources.list,将sources.list内容全部替换为以下内容:# 电子科大(教育网用户推荐)deb /ubuntu/ precise main restricted universe multiversedeb /ubuntu/ precise-backports main restricted universe multiversedeb /ubuntu/ precise-proposed main restricted universe multiversedeb /ubuntu/ precise-security main restricted universe multiversedeb /ubuntu/ precise-updates main restricted universe multiversedeb-src /ubuntu/ precise main restricted universe multiversedeb-src /ubuntu/ precise-backports main restricted universe multiversedeb-src /ubuntu/ precise-proposed main restricted universe multiversedeb-src /ubuntu/ precise-security main restricted universe multiversedeb-src /ubuntu/ precise-updates main restricted universe multiverse# 中国科技大学(教育网用户推荐)deb /ubuntu/ precise main restricted universe multiversedeb /ubuntu/ precise-backports restricted universe multiversedeb /ubuntu/ precise-proposed main restricted universe multiversedeb /ubuntu/ precise-security main restricted universe multiversedeb /ubuntu/ precise-updates main restricted universe multiversedeb-src /ubuntu/ precise main restricted universe multiversedeb-src /ubuntu/ precise-backports main restricted universe multiversedeb-src /ubuntu/ precise-proposed main restricted universe multiversedeb-src /ubuntu/ precise-security main restricted universe multiversedeb-src /ubuntu/ precise-updates main restricted universe multiverse# 北京理工(教育网用户推荐)deb /ubuntu/ precise main multiverse restricted universedeb /ubuntu/ precise-backports main multiverse restricted universedeb /ubuntu/ precise-proposed main multiverse restricted universedeb /ubuntu/ precise-security main multiverse restricted universedeb /ubuntu/ precise-updates main multiverse restricted universedeb-src /ubuntu/ precise main multiverse restricted universedeb-src /ubuntu/ precise-backports main multiverse restricted universedeb-src /ubuntu/ precise-proposed main multiverse restricted universedeb-src /ubuntu/ precise-security main multiverse restricted universedeb-src /ubuntu/ precise-updates main multiverse restricted universe# 163(非教育网推荐)deb /ubuntu/ precise main restricteddeb-src /ubuntu/ precise main restricteddeb /ubuntu/ precise-updates main restricteddeb-src /ubuntu/ precise-updates main restricteddeb /ubuntu/ precise universedeb-src /ubuntu/ precise universedeb /ubuntu/ precise-updates universedeb-src /ubuntu/ precise-updates universedeb /ubuntu/ precise multiversedeb-src /ubuntu/ precise multiversedeb /ubuntu/ precise-updates multiversedeb-src /ubuntu/ precise-updates multiversedeb /ubuntu/ precise-backports main restricted universe multiversedeb-src /ubuntu/ precise-backports main restricted universe multiversedeb /ubuntu/ precise-security main restricteddeb-src /ubuntu/ precise-security main restricteddeb /ubuntu/ precise-security universedeb-src /ubuntu/ precise-security universedeb /ubuntu/ precise-security multiversedeb-src /ubuntu/ precise-security multiversedeb /ubuntu precise maindeb-src /ubuntu precise main# sohu(非教育网推荐)deb /ubuntu/ precise main restricteddeb-src /ubuntu/ precise main restricteddeb /ubuntu/ precise-updates main restricteddeb-src /ubuntu/ precise-updates main restricteddeb ht

温馨提示

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

评论

0/150

提交评论