用QEMU搭建arm开发环境之五:建立交叉编译环境,第一个程序HelloQEMU

1.在BusyBox增加交叉编译运行环境

之前的章节我们已经完成了从内核启动ramdisk,然后ramdisk挂载一个外部存储,并跳转到外部存储上的文件系统的过程.但是我们还没有在这个模拟系统中运行我们自己写的程序.

在自己写程序之前我们必须建立交叉编译环境,在HOST端,这个交叉编译环境已经建好了(请参见 用QEMU搭建arm开发环境之二:QEMU启动内核这一章的内容).但是在qemu里面还需要加入对应的运行环境.这个运行系统所需的文件在我们解压arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2这个文件后的opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/sysroot下.目录下的文件大约是这样的:

etc  lib  lib32  lib64  sbin  usr  var

我们需要重新挂载刚才做好的busybox的文件系统,然后把上面的文件复制进去:

cp rootfs.ext3 rootfsbak.ext3
sudo mount rootfs.ext3 mnt
cd mnt
sudo cp -rf ~/qemuwork/tmp/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/sysroot/* .
cd ..
sudo umount mnt

修改成功后,我们再次启动看看是否能够正常启动

qemu-system-arm -M vexpress-a9 -m 512M -kernel zImage -dtb vexpress-v2p-ca9.dtb -initrd ramdisk.gz -append "root=/dev/ram0 clocksource=pit rw console=tty0 rdinit=/init" -sd rootfs.ext3


2.编写第一个程序HelloQEMU

上面我们修改文件系统后,并没有检查是否能够正常运行我们写的程序,所以我们这里要写一个程序来试一下.

cd ~/src
vi test.c

上面我们建立一个test.c文件,然后输入如下内容:

#include<stdio.h>

int main()
{
	printf("hello world!\n");
	return 0;
}

保存后,使用如下命令编译:

arm-none-linux-gnueabi-gcc test.c -o test


3.下载并运行HelloQEMU

编译成功后的test文件我们需要放入到rootfs中.

sudo mount rootfs.ext3 mnt
cd mnt
sudo mkdir root
sudo cp ~/src/test root/
cd ..
sudo umount mnt

然后我们再次启动qemu,执行如下命令:

qemu-system-arm -M vexpress-a9 -m 512M -kernel zImage -dtb vexpress-v2p-ca9.dtb -initrd ramdisk.gz -append "root=/dev/ram0 clocksource=pit rw console=ttyAMA0 rdinit=/init" -sd rootfs.ext3 -serial stdio -smp 4

启动成功后,测试一下:

/ # ls
bin      etc      lib32    linuxrc  root     sys      var
dev      lib      lib64    proc     sbin     usr
/ # cd root
/root # ls
test
/root # ./test
hello world!
/root # 

至此交叉编译后的运行环境搭建成功.

 

鸣谢:本文部分内容来自下面的链接,感谢相关作者的贡献.如侵权或需要删除请联系我.

https://www.cnblogs.com/tansuoxinweilai/p/11602830.html

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值