设为首页 加入收藏

TOP

关于在Android上运行纯C程序
2014-11-24 08:17:50 来源: 作者: 【 】 浏览:0
Tags:关于 Android 运行 程序

其实不然,因为Linux系统的程序在调用动态库的时候有个首先需要访问的动态库就是ld-linux.so这个库,由这个库去访问你自己定义的动态库,然后Android上没有这个库,所以无法调用自己生成的动态库了。很明显一点就是在执行程序的时候显示结果是not found,说明确实是去找了,只是没找到而已。


既然如此,是不是只需要将这个库拷到Android上就可以了呢,经过试验,答案是肯定的。首先使用UltraEdit等16进制工具打开编译出来的可执行程序,就可以看到它首先要去索引的文件的路径,可以看到/lib/ld-linux.so.3知道了这个路径,我们发现在系统中没有/lib这个文件夹,没关系,自己建一个,然后去装有arm gnu编译器的linux系统中,搜索arm安装目录里面的ld-linux.so出来,搜完发现ld-linux.so只是个快捷方式,真正链接的是ld-2.11.1.so,那就把它传到Android里面刚建立的/lib里面,然后重命名成ld-linux.so.3然后再去执行,就发现不再是not found了,已经提示你,加载xxx.so出错,没有该文件,那你继续去找吧,把它需要的系统库全部找出来,拷过去,命名成它需要的名字,就大公搞成了,完全可以调用自己的动态库了


现在我还有个疑问需要解答,这种arm-none-linux-gnueabi-gcc编译器和ndk里面arm-none-linux-android-gcc是否一样或者是否兼容,使用ndk编译出来的so文件是否可以被调用?


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux驱动几个关键点 下一篇Beginning Linux Programming 笔记

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)
·MySQL下载与安装教程 (2025-12-26 13:21:26)
·Linux_百度百科 (2025-12-26 12:51:52)
·Shell 流程控制 | 菜 (2025-12-26 12:51:49)