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

ARM 164浏览

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