arm-marvell-linux-gnueabi 交叉编译c/c++程序,并移植到android

这次要把在机顶盒上运行的程序交叉编译到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来编译。

你可能感兴趣的:(android)