良许Linux教程网 干货合集 Linux下调用dll& .so库具体方法

Linux下调用dll& .so库具体方法

Linux下如何调用dll& .so库?dll是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库,下面良许教程网为大家分享一下Linux下调用dll& .so库具体方法。

Linux下调用dll& .so库具体方法

 {
 void *handle=dlopen("./libdemo4.so",RTLD_LAZY);
 void(*fun)(int)=dlsym(handle,"diamond");
 fun(5);
 dlclose(handle);}

使用libdl.so库 动态库加载的原理

动态库中函数的查找已经封装成库libdl.so dlopen 打开一个动态库 dlsym 在打开动态库找一个函数 dlclose 关闭动态库 //dlerror 返回错误

注意了 动态库是可以执行,静态库不能执行 但动态库没有main,不能独立执行。 动态库不会连接成程序的一部分。 程序执行的时候,必须需要动态库文件。

 ldd  察看程序需要调用的动态库
  ldd 只能察看可执行文件.
  readelf -h 察看执行程序头.
  nm   察看库中的函数符号

3.动态库的编译 3.1.编译 -c -fpic(可选) 3.2.连接 -shared 4.使用动态库 gcc 代码 动态库文件名 gcc 代码 -l库名 -L动态库所在路径

标准命名规则: lib库名.so lib库名.a

  -l 库名  -L 库所在路径

大深坑: 4.1.执行程序怎么加载动态库? 4.2.动态库没有作为执行程序的一部分,为什么连接需要指定动态库以及目录? 连接器需要确定函数在动态库的中的位置

动态库的加载: 1.找到动态库 2.加载动态库到内存 3.映射到用户的内存空间 系统对动态库查找规则: /lib /usr/lib 到环境变量LD_LIBRARY_PATH指定的路径中查找

三.静态库的编译 1.编译过程(*.a achieve) 1.1.编译成目标文件 -static 可选 gcc -c -static 代码文件.c

1.2.归档成静态库 ar工具 ar -r -t ar -r 静态库文件 被归档的文件

  nm工具(察看函数符号表)
   nm 静态库或者动态库或者目标文件或者执行文件

1.3.使用静态库 gcc 代码 静态库

结晶步骤:

 1.函数等代码封装的二进制已经编译的归档文件
 
 2.ar归档方式 库的方式

3.编译好的程序运行的时候不依赖库。库作为程序的一部分编译连接。

 4.文件集合(归档)

5.库命名规则 注意了: lib库名.a.主版本号.副版本号.批号 lib库名.a 库使用规则 -l 库名 -L 库所在目录

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

137e00002230ad9f26e78-265x300

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部