为了简化开发和测试过程,Ubuntu从9.10开始提供静态的ARM虚拟功能,可以直接在PC机上建立ARM机器的chroot环境,既可以编译,也可以测试程序。相比于交叉编译而言,这种方法虽然编译速度较慢,但配置方便,还具备直接调试的功能。
先安装Ubuntu提供的ARM虚拟程序:
1 | sudo apt-get install qemu-arm-static
debootstrap |
接着,使用build-arm-chroot命令建立chroot系统:
1 | build-arm-chroot
karmic eabi-chroot |
国内用户可以考虑使用srt.cn的镜像以加快速度:
build-arm-chroot karmic eabi-chroot
http://Ubuntu.srt.cn/ubuntu-ports/ 建立chroot环境的脚本:
3 | mount --bind
/dev $DROOT/dev |
4 | mount --bind
/proc $DROOT/proc |
5 | mount --bind
/sys $DROOT/sys |
6 | mount --bind
/dev/pts $DROOT/dev/pts |
7 | cp /etc/resolv.conf
$DROOT/etc/resolv.conf |
chroot成功后,就进入了模拟arm开发环境。
使用 uname -a
可以观察到架构的变化。此后,新建或修改/etc/apt/sources.list,
在/etc/apt/sources.list中添加如下内容:
deb
http://ports.Ubuntu.com/ lucid main restricted universe multiverse
deb-src
http://ports.Ubuntu.com/ lucid main restricted universe multiverse
然后在终端输入 apt-getupdate更新之后,就可以按需装软件、开发程序了。
在更新时出现如下错误信息:
E: Internal Error, Could not perform immediate configuration (2) on mountall。
解决办法:
2 | #
dpkg --force-all -i /var/cache/apt/archives/mount_2.XX.X-0Ubuntu1_i386.deb |
在终端输入:exit 退出模拟arm开发环境。然后按顺序卸载刚才挂载的目录。
建立退出chroot环境脚本:
3 | #umount
the directory of eabi-chroot |
6 | umount -l
$DROOT/dev/pts |