温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux下如何调用dll& .so库

发布时间:2022-01-26 10:28:22 来源:亿速云 阅读:123 作者:小新 栏目:开发技术

这篇文章主要介绍了Linux下如何调用dll& .so库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

dll是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。

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下如何调用dll& .so库”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI