嵌入式Linux支持dlopen,Android下使用dlopen函数动态调用.so链接库
在这篇文章(【09.03.25】Linux环境中dlopen函数的简单应用)中。实现了在UBUNTU LINUX环境下使用dlopen函数动态调用.so链接库。但是也提到了在Android下未能成功。由于Android也是使用linux内核,因此估计程序本身可能并没有什么错误,问题应该是出现在Android.mk文件中。今天早上试着修改了一下Android.mk,终于将这个问题解决了。好在两个C程序和一个.mk文件并不是太长,现将它们贴一遍/*************************** dl1.c *******************************/
#include#include#includeint main()
{
int a,b;
void *p;
int (*func)(int,int);
scanf("%d%d",&a,&b);
p=dlopen("./dl2.so",RTLD_NOW);
if(p==NULL)
{
printf("dlopen error!\n");
exit(0);
}
else
printf("dlopen ok!\n");
func=dlsym(p,"max");
printf("%d与%d相比,%d为大数。\n",a,b,(*func)(a,b));
dlclose(p);
}
/*************************** dl1.c *******************************//*************************** dl2.c *******************************/
#includeint max(int x,int y)
{
return x>y?x:y;
}
/*************************** dl2.c *******************************//*************************** Android.mk *******************************/
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
dl2.c
LOCAL_PRELINK_MODULE := true
#LOCAL_CFLAGS=-fPIC
LOCAL_MODULE:= dl2
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
dl1.cLOCAL_SHARED_LIBRARIES := \
libdl#LOCAL_CFLAGS=-ldl
LOCAL_PRELINK_MODULE := true
LOCAL_MODULE:= dl1
include $(BUILD_EXECUTABLE)
/*************************** Android.mk *******************************/上一次之所以失败,原因似乎是使用了红色字体的那一句,因为我将其更换为蓝色字体的那一句,问题就解决了。看来这样写在链接时才能正确找到libdl.so,而包含该.so文件是使用dlopen函数的保证。将这三个文件放在Android源码目录下的development目录下的dl文件夹中(dl文件夹是新建的),然后在终端中使用root权限进入到Android源码目录下,执行 make dl1。成功后将会在android源码目录/out/target/product/generic/system/lib/中生成dl2.so动态链接库文件,在android源码目录/out/target/product/generic/system/bin/中生成dl1可执行文件。使用以下命令将它们放入Android模拟器,注意要先启动emulatoradb push Android源码目录/out/target/product/generic/system/lib/dl2.so /dataadb push Android源码目录/out/target/product/generic/system/bin/dl1 /data进入data文件夹执行adb shell# cd data# ./dl187 9(这里随便输入两个数)dlopen ok!87与9相比,87为大数。
嵌入式Linux支持dlopen,Android下使用dlopen函数动态调用.so链接库相关推荐
- 嵌入式Linux开发,Ubuntu22下交叉编译内核报错: multiple definition of `yylloc‘; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0
一.问题描述 嵌入式Linux开发,Ubuntu22下交叉编译内核报错: /usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple ...
- 嵌入式linux 移植安卓,Android系统内核移植流程详解
Android系统移植工作的目的是为了在特定的硬件上运行Android系统,由于Android系统用的是linux内核,因此内核移植和嵌入式linux移植差异不大,过程如下: (1)移植boot-lo ...
- Android NDK开发: 通过C/C++调用第三方so库
文章目录 一.编写so库代码 二.安装Android NDK 三.编译so库 3.1 编辑Android.mk 3.2 编辑Application.mk 3.3 编译 四.集成到Android工程中 ...
- linux 静态编译多媒体框架,Go编译32位GNU静态链接库的方法
Go链接库系统的难用可谓是人尽皆知,不同Go版本编译出来的不兼容,而且只支持GNU的,不能编译出Windows上的dll和lib. 本次有需求是将Go代码编译成32位GNU静态链接库. Go代码 编写 ...
- android 动态库获取路径问题,一种Android App在Native层动态加载so库的方案
这篇文章通过实战案例,介绍了一种有条理的组织Native层代码层级结构的方法.并且,在良好的代码层级.作用分工的基础上,实现了动态的按需加载.卸载so库.文章的最后,还介绍了实践过程中遇到的困难以及对 ...
- fftw3 嵌入式linux安装,Ubuntu18.04下快速的安装UHD与GnuRadio并连接USRP设备
USRP的开发软件安装 USRP开发平台介绍 Ubuntu系统下安装流程 Ubuntu系统依赖的安装 安装UHD USRP开发平台介绍 USRP可以适用于Windows和Linux两种平台,同时支持的 ...
- 嵌入式Linux支持LCD console【转】
转自:http://blog.sina.com.cn/s/blog_664c545f0100v9zl.html 转载:http://www.mculee.cn/post/48.html [1]LCD ...
- 嵌入式linux支持python,【python】嵌入式设备上python的使用
在嵌入式设备上已经安装了SDK等一些相关环境 使用登陆后台的账号登陆后台 BusyBox v1.25.1 (2020-02-17 18:53:37 CST) built-in shell (ash) ...
- 基于嵌入式linux五子棋游戏,Android 实战项目之五子棋 附源码
Android五子棋游戏五子连珠算法实现 1.游戏规则 五子棋是两个人之间进行的竞技活动,黑方白方规则规则相同,黑棋必须先行,五连子的方向为横.竖.斜,如黑白色任一方先五子连一线则算胜出. 2.五子连 ...
最新文章
- boost之ThreadPool
- 杨威(为奥运冠军名字作诗)
- LeetCode 375. Guess Number Higher or Lower II
- onsrcoll和scrollTop兼容与实现
- 总结CSS3新特性(媒体查询篇)
- 华硕主板开机:loading asus express gate解决办法
- 仿360水波评分特效、加速球特效、水波动态加载动画、可改造成圆形进度条,很丝滑!
- Base64解码后的图片打不开
- lrc歌词编辑器 android,Lrc歌词编辑器(LRC速配歌词)
- 2376. 统计特殊整数--(每日一难phase2--day4)
- 测试通达信指标胜率的软件,如何利用通达信程序交易评测系统选高胜率小回辙高收益股票...
- 计算机网课课堂评价语,网络授课如何“高效”评价学生作业(附实用评语)
- 打不死的又如何能毁灭呢?尴尬的 Windows XP 是升级还是保留?
- 《python语言程序设计》第5章 课程内的笔记 中for循环转换成while
- 12.JAVA编程思想——集合的类型
- 七夕第一波狗粮来啦!魏晨晒婚纱照,与妻子爱情长跑十年成眷属
- webug4.0总结篇
- Myeclipse各版本下载地址
- 云计算课程 DAY 1
- unity3d 5.2 添加广点通广告
热门文章
- 6、市场营销 - 开公司创业系列文章
- 软件构造1:正则表达式
- HTML有displaynone无法隐藏,display:none显示和隐藏
- 君正X2000开发板开箱测试
- Python---入门 ( 一 到 四 Unit )(1)
- 一周热图|蔡依林助力蒂佳婷;戚薇亮相上海时装周大秀;自然堂携手赵今麦推新品...
- python_21_线程+进程+协程
- 金九银十,跳槽找工作的几点良心建议
- 探秘元宇宙 || 揭秘!蓝海创意云的元宇宙应用与实践
- 微信支付的支付流程涉及哪些接口