基于glibc的程序在android上的移植
如何将Linux中现有的众多资源以最小代价移植到android是很多开发人员关注的,下面这篇文章讲了一个比较取巧的方法,我试验了一下,最基本的hello world可以跑,但是复杂的大型程序要考虑很多问题,thread,IPC,效率等等,还有待验证。
原文地址:
http://groups.google.com/group/android-internals/browse_thread/thread/7c728a36474fbc05
在Android上使用动态链接库的一种新方法 - 不使用android linker
Android使用的Linker和传统Linux使用的linker(ld.so,ld-linux.so.2,ld-linux.so.3)不同,
他的Bionic里面的libdl实际只是一个stub函数,真正的实现都在system/bin/Linker里面。
我认为ld.so针对a.out格式的二进制可执行文件, ld-linux.so.2针对elf格式的二进制可执行文件,
ld-linux.so.3是新一代针对elf格式的二进制可执行文件的Linker,错了的话请纠正。
实际上我试验使用ld-linux.so.3代替android的/system/bin/linker来作为系统动态链接库的
linker。
下面给出一个简单的例子:
hello.c
#include
int main()
{
printf("\n Hello World \n");
return 0;
}
所用的Toolchain从Code Sourcery得到。使用的是arm gnu/linux系列。
编译方式:
arm-none-linux-gnueabi-gcc -o hello.out hello.c -Wl,-dynamic-linker=/yourpath/ld-linux.so.3 (不要使用-static使得程序是动态链接)。
然后找到hello.out依赖的动态库,这里给出的列表是我猜的(因为我的cgywin里没有ldd)。
ld-linux.so.3,
libgcc_s.so,
libc.so.6
(其实用readelf -d也可以找到依赖的动态库。)
我把这些文件从toolchain库(libc/usr/lib)里面找出来然后上传到android emulator的/data/app目录。
然后将hello.out上传到同一个目录后然后改变其权限使其可执行(chmod).然后执行它,
OK !!you can get it!!
因此,所有的程序不管它是否动态链接库还是其他的,如果在host系统toolchain能成功按上面方法编译,那理论上它就可以在android系统上运行。你只需要将程序和相应的动态库上传到合适的目录。
记住最关键的,编译时一定要加上“-Wl,-dynamic-linker=/yourpath/ld-linux.so.3" 。
注意,这里的youpath要和你在android模拟器上执行这个程序时的路径一样,否则会出not found错误。最好把ld-linux.so.3拷贝到编译目录,并且执行时所有文件都在同一个目录。
http://blog.chinaunix.net/uid-223060-id-2215345.html
基于glibc的程序在android上的移植相关推荐
- android编译glibc,基于glibc的程序在android上的移植
如何将Linux中现有的众多资源以最小代价移植到android是很多开发人员关注的,下面这篇文章讲了一个比较取巧的方法,我试验了一下,最基本的hello world可以跑,但是复杂的大型程序要考虑很多 ...
- java+SpringBoot+HTML+Mysq基于微信小程序的掌上博物馆游览
详细功能设计:请点击下面链接查看 java+SpringBoot+HTML+Mysq基于微信小程序的掌上博物馆游览_哔哩哔哩_bilibili 源码+论文获取: 源码+论文获取请私信获取 摘 要 本 ...
- 微软程序在Android上跑,想在Win 10上运行Android应用?这类手机用户已经可以尝鲜...
在Win 10上运行Android应用?这听起来有些异想天开,可实实在在的需求却在这里,毕竟微软Windows体系内的无缝切换,离开了手机平台始终有些怪怪的,自然,微软也不会甘心放弃,最好的办法,莫过 ...
- ssm基于微信小程序的恋上诗词设计与实现毕业设计源码011431
基于SMM微信小程序的恋上诗词设计与实现 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,恋 ...
- ssm+mysql+基于微信小程序的恋上诗词设计与实现 毕业设计-附源码011431
基于SMM微信小程序的恋上诗词设计与实现 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,恋 ...
- (附源码)ssm基于微信小程序的恋上诗词设计与实现 毕业设计 011431
基于SMM微信小程序的恋上诗词设计与实现 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,恋 ...
- 【计算机毕业设计】基于微信小程序的线上水果店系统 水果销售系统
毕设帮助.源码交流.技术解答,见文末 一.前言 现如今,互联网的广泛普及与应用,标志着信息化的时代已经到来,管理信息化行业在生活中占据着越来越重要的地位,信息化的服务与管理,大大简化了传统的管理模式, ...
- FFmpeg在Android上的移植优化步骤
从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmpeg开发的.如今最火的智能手机操作系统Android上的很多第三方视频播放器也是基于FFmpeg实现全格式支持.由于A ...
- android启用其他应用程序,杀死Android上的另一个应用程序?
我试图杀死我的另一个应用程序.但是这段代码无法杀死我的另一个应用程序.我知道杀死另一个应用程序是一个坏主意.但是我有一个学习的目的,并且我试图杀死人.我的代码部分: Button runningApp ...
最新文章
- 微服务注册中心的选型和思考
- docker与kuberentes基本概念与操作学习
- cmd命令窗口mysql查询表数据命令行_cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)...
- (10)数据分析-变量分析
- html----js控制下拉框(详解
- php微信公众号登录
- java求根号值_Java-求根号n(示例代码)
- WinCE 下鼠标键盘驱动分析
- 短信API接口怎么调用?
- 明尼苏达大学博导“约法十章”火了:没事不乱开会、合写论文不要催导师,复旦教授直呼值得学习...
- 无处不在的人生压力让人变得孤独抑郁
- 用Python代码刷王者金币
- 计算机自定义桌面,如何自定义电脑桌面的图标显示
- 示波器X-Y模式分析
- 实战攻防之紫队视角下的实战攻防演习组织
- UltraISO刻录系统映象出现“此光盘不是空白光盘”
- 双通道中频信号数字下变频及相位差估计(FPGA)
- memsql-官宣世界最快的内存关系型数据库安装部署
- xcode 工程常见问题
- JVM成神之路-Java垃圾回收