我在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