千家信息网

Linux下如何调用dll& .so库

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,这篇文章主要介绍了Linux下如何调用dll& .so库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。dll是Dynamic Link
千家信息网最后更新 2024年11月27日Linux下如何调用dll& .so库

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

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

 { 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库"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

动态 程序 文件 编译 静态 代码 函数 篇文章 规则 库文件 所在 路径 内存 同时 工具 方式 时候 版本 目录 目标 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 太阳线软件开发哪家好 数据库的使用领域是什么意思啊 计算机网络技术 电大 南充 文物鉴定软件开发 广州祈际网络技术有限公司 官渡区服务器上门回收价格表 南充定制软件开发 软件的服务器迁移需要注意什么 四川大学网络安全夏列营面试 广州市网络技术公司招聘 本地电脑用的php服务器 维护网络安全教育 方舟生存进化全生物数据库 怎么开设网络安全专业 南通企业软件开发管理方法 网络安全宣传标语校园图片 服务器日常维护及安全保障合同书 考研数据库1天速成 l2tp免费vpn服务器 IPV9与网络安全 电脑登入账号显示无法连接服务器 修复数据库错误工具 网络安全设备检验 天津网络技术开发咨询报价 恋与有几个服务器 三级分销商城软件开发 北京订制软件开发团队 我的世界小智神奇宝贝服务器 王者服务器崩了元旦 三大中文数据库都可以二次检索吗
0