这次要把在机顶盒上运行的程序交叉编译到android平台运行, 机顶盒是mips的, 而android是arm的, 显然需要不同toolchain来编译。
于是下载了android的NDK, 缺少很多的头文件, 我的程序用到了 linux 系统的消息队列做进程间通信,消息队列相关的 <sys/msg.h> 不存在, 这就麻烦了。
决定下载arm 的 toolchain 来编译试试看。
通过下面的操作进行下载:
www.plugcomputer.org --> Download --> GPLUGD --> Tools Chain 找到下载地址为 :
http://www.plugcomputer.org/405/us/gplugd/tool-chain/arm-marvell-linux-gnueabi.tar.bz2
下载后解压到 /home目录, 然后设置环境变量,下来进行编译。
PATH="/home/arm-marvell-linux-gnueabi/bin/:$PATH"
./configure --host=arm-marvell-linux-gnueabi --target=arm-marvell-linux-gnueabi
还算顺利, 编译成功, 下来要移植到android上进行测试。
移植时先安装驱动 android_usb_windows, 驱动安装成功后, 插上USB口, 能自动认上USB口的android设备, 下来执行 adb.exe shell 进入shell环境。
然后执行 mount -o remount rw /
然后退出shell环境, 再执行 adb.exe push client /sdcard/client 即可成功, 否则会报错 Read-only file system 。
下来把程序上传到android设备, 执行, 提示 not found , 显然, 产生这个问题的原因是缺少动态库, 但是到底缺少那个, 又不能使用ldd 来查看, 是在是个问题啊,看来虽然都是arm的芯片, 但是android的工具链还是不一样啊, 此方法宣告失败。
具体原因未明, 还是得老老实实的通过NDK来编译。