经验总结---编译出可以在Android上执行的可执行文件

本文详细介绍了如何在Ubuntu环境下,通过交叉编译和移植技术,将程序编译为能在Android设备上运行的可执行文件。涉及关键步骤包括:准备交叉编译工具链、确定程序解释器和共享库、设置文件权限和建立符号链接。通过实例展示了从源代码到在Android设备上成功运行的过程。
摘要由CSDN通过智能技术生成

作为一手包揽Ubuntu和Android设备的初级开发者,我不止一次地尝试把这两个同是用Linux内核的操作系统统一起来——让Ubuntu下的可执行程序能够在Android设备上运行。于是我不止一次地尝试,不止一次地查找资料,终于如愿以偿。

我把我的经验在这里与大家分享。


准备工具

【宿主机】

(1)glibc-arm2.1.7库文件——让Android系统能够跑起自己编译好的程序

(2)arm-linux-gcc4.4.3——嵌入式ARM系统的应用程序编译器,这个就不必多说了。运行之前请务必保证设置好环境变量。

【Android设备】

(1)要求已经Root——在没有开启Root权限的情况下,本教程中编译好的程序会无法运行,出现Segmentation Fault的错误。

(2)RE管理器——Android上的文件管理工具,在这里用于复制文件

(3)终端模拟器(建议用Terminal Emulator)——用于调试我们的程序


具体步骤

1.在宿主机上,通过预先用arm-linux-gcc编译,获取程序解释器和共享库文件名

a.在终端中运行:

arm-linux-gcc-o <输出文件名><源代码文件名>

得到可执行文件

b.在终端中运行:

readelf -l <输出文件名>

仔细找找,就可以找到程序解释器的文件名了。一般用方括号扩起,并有”interpreter”(程序解释器)的注明。

c.运行

readelf -d <输出文件名>    

在输出结果中找到”NEEDED”一行。该行最右边就是共享库的文件名。有多少个文件名就有多少个共享库。

d.搞定之后,把输出文件删掉。

之所以要进行这一步,是因为不同的程序对应的程序解释器可能不同。

2.在宿主机上用arm-linux-gcc正式编译出可执行文件

这一步编译出来的可执行文件是要直接放到设备上运行的。

必须使用以下格式:

arm-linux-gcc-o <输出文件名> <源代码文件名> -Wl,-dynamic-linker=/yourpath/<程序解释器文件名>

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值