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

本文记录了一次将MIPS架构下的机顶盒程序交叉编译到ARM架构Android平台的过程。作者尝试使用特定的ARM工具链进行编译,但遇到了缺少动态链接库的问题,最终决定回归使用Android NDK进行编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

langeldep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值