在这篇文章(【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链接库相关推荐

  1. 嵌入式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 ...

  2. 嵌入式linux 移植安卓,Android系统内核移植流程详解

    Android系统移植工作的目的是为了在特定的硬件上运行Android系统,由于Android系统用的是linux内核,因此内核移植和嵌入式linux移植差异不大,过程如下: (1)移植boot-lo ...

  3. Android NDK开发: 通过C/C++调用第三方so库

    文章目录 一.编写so库代码 二.安装Android NDK 三.编译so库 3.1 编辑Android.mk 3.2 编辑Application.mk 3.3 编译 四.集成到Android工程中 ...

  4. linux 静态编译多媒体框架,Go编译32位GNU静态链接库的方法

    Go链接库系统的难用可谓是人尽皆知,不同Go版本编译出来的不兼容,而且只支持GNU的,不能编译出Windows上的dll和lib. 本次有需求是将Go代码编译成32位GNU静态链接库. Go代码 编写 ...

  5. android 动态库获取路径问题,一种Android App在Native层动态加载so库的方案

    这篇文章通过实战案例,介绍了一种有条理的组织Native层代码层级结构的方法.并且,在良好的代码层级.作用分工的基础上,实现了动态的按需加载.卸载so库.文章的最后,还介绍了实践过程中遇到的困难以及对 ...

  6. fftw3 嵌入式linux安装,Ubuntu18.04下快速的安装UHD与GnuRadio并连接USRP设备

    USRP的开发软件安装 USRP开发平台介绍 Ubuntu系统下安装流程 Ubuntu系统依赖的安装 安装UHD USRP开发平台介绍 USRP可以适用于Windows和Linux两种平台,同时支持的 ...

  7. 嵌入式Linux支持LCD console【转】

    转自:http://blog.sina.com.cn/s/blog_664c545f0100v9zl.html 转载:http://www.mculee.cn/post/48.html [1]LCD ...

  8. 嵌入式linux支持python,【python】嵌入式设备上python的使用

    在嵌入式设备上已经安装了SDK等一些相关环境 使用登陆后台的账号登陆后台 BusyBox v1.25.1 (2020-02-17 18:53:37 CST) built-in shell (ash) ...

  9. 基于嵌入式linux五子棋游戏,Android 实战项目之五子棋 附源码

    Android五子棋游戏五子连珠算法实现 1.游戏规则 五子棋是两个人之间进行的竞技活动,黑方白方规则规则相同,黑棋必须先行,五连子的方向为横.竖.斜,如黑白色任一方先五子连一线则算胜出. 2.五子连 ...

最新文章

  1. boost之ThreadPool
  2. 杨威(为奥运冠军名字作诗)
  3. LeetCode 375. Guess Number Higher or Lower II
  4. onsrcoll和scrollTop兼容与实现
  5. 总结CSS3新特性(媒体查询篇)
  6. 华硕主板开机:loading asus express gate解决办法
  7. 仿360水波评分特效、加速球特效、水波动态加载动画、可改造成圆形进度条,很丝滑!
  8. Base64解码后的图片打不开
  9. lrc歌词编辑器 android,Lrc歌词编辑器(LRC速配歌词)
  10. 2376. 统计特殊整数--(每日一难phase2--day4)
  11. 测试通达信指标胜率的软件,如何利用通达信程序交易评测系统选高胜率小回辙高收益股票...
  12. 计算机网课课堂评价语,网络授课如何“高效”评价学生作业(附实用评语)
  13. 打不死的又如何能毁灭呢?尴尬的 Windows XP 是升级还是保留?
  14. 《python语言程序设计》第5章 课程内的笔记 中for循环转换成while
  15. 12.JAVA编程思想——集合的类型
  16. 七夕第一波狗粮来啦!魏晨晒婚纱照,与妻子爱情长跑十年成眷属
  17. webug4.0总结篇
  18. Myeclipse各版本下载地址
  19. 云计算课程 DAY 1
  20. unity3d 5.2 添加广点通广告

热门文章

  1. 6、市场营销 - 开公司创业系列文章
  2. 软件构造1:正则表达式
  3. HTML有displaynone无法隐藏,display:none显示和隐藏
  4. 君正X2000开发板开箱测试
  5. Python---入门 ( 一 到 四 Unit )(1)
  6. 一周热图|蔡依林助力蒂佳婷;戚薇亮相上海时装周大秀;自然堂携手赵今麦推新品...
  7. python_21_线程+进程+协程
  8. 金九银十,跳槽找工作的几点良心建议
  9. 探秘元宇宙 || 揭秘!蓝海创意云的元宇宙应用与实践
  10. 微信支付的支付流程涉及哪些接口