您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 建立ArmLinux仿真开发环境
1建立ArmLinux仿真开发环境X-Men小组2内容•1.Armlinux-2.4.18仿真环境的建立•2.Armlinux-2.6.0内核配置的问题3Armlinux-2.4.18•交叉编译环境•编译ARMLinux内核•制作根文件系统•装载ARMLinux4相关软件:•ubuntu7.10•skyeye_1_2_3•cross-2.95.3•busybox-1.005•系统准备:安装UBUNTU7.10设置系统的更新源更新源就是提供Ubuntu相关软件下载的服务器地址a先把原有的更新源备份一下:sudocp/etc/apt/sources.list/etc/apt/sources.list_backupb输入用户密码后,然后编辑新的更新源sudogedit/etc/apt/sources.list673.保存编辑好的文件,执行以下命令更新.sudoapt-getupdatesudoapt-getdist-upgrade4.更新完后,重新启动系统.85.安装本机编译工具在终端上,输入sudoapt-getinstallbuild-essential将安装本机所需的编译工具和相关支持库。如此步没做,后面进行一些编译时会有很多的错误。9•安装交叉编译环境1.先下载cross-2.95.3.tar.bz22.解压缩,产生2.95.3这个目录,在/usr/local目录下新建一个目录arm,将2.95.3目录及其内容拷贝到此目录下如果是用cross-3.2则可以在根目录/下直接解压缩就可以了103.添加环境变量sudogedit~/.bashrcexportPATH=$PATH:/usr/local/arm/bin注意:此步后要重新登录系统更改才有效4.检查是否建立好交叉编译环境对arm-linux-使用tab键功能查看arm-linux-gcc的版本用arm-linux-gcc编译目标版的可执行程序1112•编译ARMLinux内核1.准备内核2.配置内核3.编译内核13a准备内核1.下载标准Linux的内核源码和ARMLinux的补丁linux-2.4.18.tar.bz2patch-2.4.18-rmk7.bz22.解压缩内核,并打上ARMLinux的补丁patch-p1../patch-2.4.18-rmk7.bz2错误:找不到patch命令原因:Ubuntu默认没有安装patch工具解决:安装patchsudoapt-getinstallpatch14b配置内核这个环节是最麻烦的,进展最慢的地方。1:容易出错:2:错误不好解决。如果在此之前的步骤能成功完成,在这个环节会少很多的错误,节省很多时间。所以如果有很多很奇怪的错误,最好不要盲目,先检查之前的编译工具,支持库,环境变量等是否设置正确。当然之前能顺利完成,在这个环节还是有不少错误;对内核的配置还是有很多不清楚的地方。关于内核编译配置选项简介可以参照下面的网址:配置内核的方式三种方式:•makeconfig命令行式的一般不推荐•makexconfig可用鼠标点击选择•makemenuconfig菜单式,用键盘控制16错误及解决方法•错误1:•如执行“makexconfig”指令,进入内核设置时,系统会报错说没有wish命令。•解决方法:•根据提示进行安装wish即可。Ubuntu默认是没有安装这个命令的。17•错误2:•若运行makemenuconfig会提示ncurses找不到,这是因为menuconfig用到了ncurses库.系统默认没有安装.•解决办法如下:•sudoapt-getinstalllibncurses5-dev。18错误3:配置完后编译内核,开始编译。编译中报错:这个错误很常见。19解决方法:这个原因是你在配置内核的时候选了vga的支持,去掉consoledrivers下的vgatextconsole选项后重新编译20•错误4:21解决方法:去掉characterdevice中的virtualterminal选项。22制作根文件系统这个环节也是很比较困难的地方,出错很多1)安装busybox工具包2)创建文件系统的映象文件3)配置根文件系统23busybox•错误1:24解决办法:makemenuconfig,然后选择NetworkingUtilities.将route项不选。25•错误2:26如果出现找不到内核版本号的编译错误,可以有两种方法解决:(1)把你的内核源码中的version.h文件拷贝到交叉编译器的包含文件的linux目录下;(2)该方法来源于论坛上面的一位朋友,做法为删掉#includelinux/version.h换成#defineUTS_RELEASE2.4.18-rmk7#defineLINUX_VERSION_CODE132114#defineKERNEL_VERSION(a,b,c)(((a)16)+((b)8)+(c))(该方法我试验成功)2728•老师PPT关于busybox的介绍和编译安装虽说只有两页,自己当时也感觉不是很麻烦。可是自己真正做的时候确遇到了很多问题。29创建文件系统的映象文件①在/mnt下创建img目录,然后进入根目录执行如下指令创建一个空的映象文件:$ddif=/dev/zeroof=initrdbs=1024kcount=1$mke2fs-F-m0initrd②使用如下指令加载创建的文件系统,并复制文件系统中必要的文件:$mount-text2-oloopinitrd/mnt/img$cp-Rd/tmp/target/*/mnt/img30创建设备文件建立设备文件,一个简单的方法是复制主机/dev/目录下一些必要的设备文件到/mnt/img/dev/目录下.基本的设备文件有:/dev/console/dev/fd0/dev/null/dev/arm0/dev/tty/dev/tty0在复制的过程中,要注意使用dp参数以保证文件属性不变.3132•sudocp-dp/dev/tty/mnt/img/dev33•解决方法:•增加映象文件的大小,重新建立5M的映象文件•ddif=/dev/zeroof=initrdbs=5Mcount=134ARMLinux移植到Skyeye上运行1.安装skyeye在终端中输入sudoapt-getinstallskyeye命令,skyeye1.2.3就安装好了2.将生成的内核映像vmlinux和根文件系统initrd拷贝到一个文件下3.编写skyeye.conf文件35363738Armlinux-2.6.0•交叉编译ARMLinux内核39•错误一:在输入“makexconfig”后,如果出现很多错误,原因是系统一些编译相关的软件包没有安装。40•在安装了相关软件后,可用看到gcc的版本是4.1.341错误二:出错原因:系统里的gcc是4.1,它对语法要求非常严格,导致该错误。42解决办法:或者去注释掉出错的那一行,或将该行static修饰符去掉。43错误三:出错原因:makexconfig运行需要相关的依赖包,出现此错误,说明此步之前没有安装QT开发包44解决办法:安装QT开发包,在新立得软件开发包管理器内安装右图所示的软件包。45错误四:我认为是:系统里的gcc是4.1,它对语法要求非常严格,导致该错误46做到这步终于可用出makexconfig的界面了47•编译内核•2.6版可以直接用make命令就可用了,不需先makedep后再执行make命令。•注意编译器的版本,要是cross-3.3以上的版本。48谢谢•陈坤,刘江,衷心感谢你们的帮助!
本文标题:建立ArmLinux仿真开发环境
链接地址:https://www.777doc.com/doc-916685 .html