unbutn交叉编译运行环境(运行环境?对有运行环境!)qemu直接模拟运行程序

我在ubuntu linux下,写了写小程序准备放android手机上用。

一般而言,能在linux下把交叉编译环境弄出来就不错了,可是我们用的是ubuntu,加上我撞了大运,居然莫名其妙apt-get就装上了交叉模拟运行环境。回头一看发现奥妙,不得不发文一篇纪念一下。qemu,你太强了,特别是qemu-user-staitc!


首先简述一下交叉编译环境安装:

要进行这一步编译工作,当然首先要用apt-get装上交叉编译工具gcc-4.4-linux-gnueabi等等,

sudo apt-get install gcc-4.4-linux-gnueabi

可以用apt-cache search arm-linux查看有哪些工具你想装的。就这样就装上了!

然后编译源码时一般可以,sudo ./configure --host=arm-linux-gnueabi 指定交叉编译环境

如果configure标准的化可以这样指定交叉编译环境,这些环境用到的lib include等等会在/usr会装在目录下的arm-linux-gnueabi目录下,/usr/local指本地,而交叉编译器会在/usr/bin内叫做arm-linux-gnueabi-gcc之类,很有规律!若有版本号而没有无版本号的,可以ln链接一下!如过没有configure或
者不规范的那就只有手动修正了,还有缺少库的问题很麻烦。实在不行export CC=arm-linux-gnueabi-gcc试试!

第二步,运行调试会发现,电脑上运行不了,非要放到android机器上或者模拟器里面去才行,太麻烦了。为什么会这样呢?因为交叉编译出来的东西,指令集不是针对X86的。

有什么办法可以让编译调试都在电脑上的?上网搜索可以发现qemu这个模拟器这个模拟器太强大了!但是网上搜索之后会发现,需要编译很多环境才能弄个arm虚拟机出来,很是不爽。飞得要虚拟机?答案是不!

apt-cache search qemu看看

qemu-user

qemu-user-static

这两个包干啥用的?

装上之后man qemu-user-static看看说明

NAME
       qemu-user-static - QEMU User Emulator (static version)

SYNOPSIS
       qemu-user-static [options] program [program-arguments...]

DESCRIPTION
       The  qemu-user-static emulator can run binaries for other architectures
       but with the same operating system as the current one.

支持在同一操作系统下模拟运行不同指令集的程序!

所以还需要装arm虚拟机吗?不用了!自己机器现在就已经可以直接运行arm程序了,类似于wine接管了win32程序,qemu可以接管其他CPU架构程序无缝运行了(当然要有特殊库需要自己弄)。




你可能感兴趣的:(arm,linux)