实现动态链接库

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

*引用本文请注明来自 blog.csdn.net/wtz1985       

在WINDOWS中,动态链接库的实现是通过DLL,对于DLL,大家熟悉得不能再熟悉的.那么在LINUX中,它又是怎样实现动态库链接的,为什么要实现动态库的链接呢?

至于为什么要实现动态库的链接,简单的而言,就是为了让节省空间,提高效率,可能在小的程序编译中感觉不出来,但你面对着庞大的程序时,如果不采取动态库链接的话,一开始就把所有的共享库编译进去,这样不但费时间,而且很费空间,效率自然就有所降低了.然而,采取了动态库的链接之后,你就会根据所需,边用边编译.这点肤浅的道理,就讲到这里.

在LINUX中,动态库的链接提供了这么几个接口:

1、dlopen函数。

第一个参数:指定共享库的名称,将会在下面位置查找指定的共享库。
    -环境变量LD_LIBRARY_PATH列出的用分号间隔的所有目录。
    -文件/etc/ld.so.cache中找到的库的列表,用ldconfig维护。
    -目录usr/lib。
    -目录/lib。
    -当前目录。
    第二个参数:指定如何打开共享库。
    -RTLD_NOW:将共享库中的所有函数加载到内存
    -RTLD_LAZY:会推后共享库中的函数的加载操作,直到调用dlsym()时方加载某函数

2、dlsym函数。

调用dlsym时,利用dlopen()返回的共享库的phandle以及函数名称作为参数,返回要加载函数的入口地址。

3、dlerror函数。

该函数用于检查调用共享库的相关函数出现的错误。

4、dlclose函数

该函数一看表面的英文意思就知道什么意思了,打开了之后记得关闭就是了。

具体的代码操作就不在这里演示了,自己可以实践实践~~

 

~~ end ~~



 

实现AES加密功能的动态链接库(Dll)项目 在信息技术飞速发展的今天,数据安全已经成为全球关注的焦点。AES(高级加密标准)作为广泛采用的对称加密算法之一,它不仅为数据提供安全保障,而且在性能上也得到了工业界的普遍认可。接下来,我们将探讨AES算法的基本原理,它在现代加密技术中的地位,以及它如何成为保护信息安全的重要工具。动态链接库(Dynamic Link Library,简称DLL)是微软公司开发的一种实现共享函数库的方式,它包含可由多个程序同时使用的代码和数据,使得程序开发更为高效。DLL模块通常分为数据段、代码段和资源段。 阅读详情

相关推荐

Linux入门 系统编程三 嵌入式开发 使用gcc制作静态库&动态库,及调用库头文件应用

方式3、修改 /etc/ld.so.conf文件,添加生成动态库的路径到该文件中,并使用ldconfig更新一下即可。默认情况下搜索动态库的路径在/lib/和/usr/lib。方式1、可以拷贝动态库到上面的两个目录之一下面。2、将要编译成库的源文件编译成.o文件。2、将要编译成库的源文件编译成.o文件。方式2、添加环境变量,只有当前终端有效。-l后面跟的是库名,就是要调用哪个库。3、使用gcc命令创建动态库。3、使用ar命令创建静态库。-L后面跟的是库所在的目录。动态库制作和使用的步骤。

ching的博客 1152

动态链接(地址无关技术)

动态链接so,节省内存大小,地址无关技术,所有的问题都可以用一个中间层来解决

小菜的OnePiece的博客 2583

windowsdll编程学习笔记

1、 DLL的概念DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。静态链接库与动态链接库的区别:(1) 静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。(2) 

青青的专栏--C/C++ OOA/D Design Pattern 866

linux下制作静态库和动态链接库的方法

静态库 .o文件的集合 制作 ar -cr libxxx.a xxx1.o xxx2.o xxx3.o ... 编译 gcc main.c -l xxx [-L 库路径] (如果不加-L则在标准库路径下查找) 运行 ./a.out 基本概念: 静态库又称为文档文件(Archive File)。它是多个.o文件的集合。Linux...

weixin_33976072的博客 227

动态链接库实现原理

动态链接库实现原理

ERAtime的博客 1193

动态链接库实现原理是什么?

而第二个程序的foo函数为内存地址0x456这个位置,接下来第二个程序开始运行,CPU开始执行foo函数,由于第二个程序的foo函数在0x456,因此我们希望CPU能跳转到这里,但由于动态库中call指令后跟的是0x123这个内存地址,因此CPU执行foo函数时依然会跳转到第一个程序的foo函数。而如果CPU执行第二个程序中的foo函数,那么CPU同样会进行相对跳转,这不过这次跳转到的是第二个程序的got表,然后发现foo的地址是0x456,然后开始执行第二个程序中的foo函数。

辣香牛肉面的博客 1297

linux下的动态链接库的编码实现

动态链接库正确的名字叫共享库,英文 Shared Library。在windows下表现为 .dll 文件,在linux下表现为 .so 文件。

Remon的专栏 1318

使用动态链接库的方式动态实现更新

1.创建动态链接库。 路径:demo下的,生成动态链接库的工程/MyTestDynamic Xcode默认不支持创建此类iOS工程,只好选择OS X的对应项目。选择Cocoa Library Type 选择为 Dynamic. Base SDK选择 iOS x.x, Architectures 选择 Standard.  删除所有的OS X frameworks, 添加 iOS SDK的

Vic 1783

进程间通信 - 动态链接库实现

引子 前面介绍的几种用于实现进程之间通信的方法都是比较正统的方式, 像剪贴板,命名管道这些都还是用得比较多的, 而这里将介绍的是一种比较偏门的方法来实现进程间的通信, 所谓偏门呢,自然就是用的少,能够不用就不要使用。 其实这种方法就是通过动态链接库实现进程间的通信。                             动态链接库DLL)概述              

锄禾日当午 828

AS3 0 实现FLASH的 动态链接库

AS3 0 实现FLASH的 动态链接库

hfuuhgcc的博客 253

linux c 动态链接库实现,Linux C动态链接库实现一个插件例子

实现一个简单的计算动态链接库;升级动态链接库后,在不重新编译主程序的情况下,直接生效。lib库:#cat math.c#include int add(int x, int y){return (x + y);}int sub(int x, int y){return (x - y);}int mul(int x, int y){return (x * y);}int div(int x, int...

weixin_32277761的博客 164

单片机高阶技能之动态链接库技术实现

AderStep_JeanCheng_CSDN博客 https://blog.csdn.net/gatieme snmplink的博客_CSDN博客 https://blog.csdn.net/qingwufeiyang12346 strongerHuang_ybhuangfugui_CSDN博客 https://blog.csdn.net/ybhuangfugui/article...

m0_37777700的博客 2456

动态链接库的简单实现(原创)

<br />    昨天大概谈谈我对静态链接库很皮毛的认识。今天再来谈谈我对动态链接库更皮毛的认识。<br />    动态链接库是在运行过程中动态加载。其运行原理基本是这样的,操作系统加载DLL的副本到内存,然后通过操作系统获取DLL中函数入口地址。系统传入程序的参数到链接库中的函数内,获取DLL内存副本运行的返回值,从而完成程序某模块的功能。这样做的好处是显而易见的,1、扩展了应用程序的特性;2、可以用许多种编程语言来编写;3、简化了软件项目的管理;4、有助于节省内存;5、有助于资源共享。<br /> 

张永新的BLOG 598

Linux C动态链接库实现一个插件例子

实现一个简单的计算动态链接库;升级动态链接库后,在不重新编译主程序的情况下,直接生效。 lib库: #cat math.c #include <stdio.h> int add(int x, int y) { return (x + y); } int sub(int x, int y) { return (x - y); } int mul(int x, int...

weixin_33937913的博客 170

动态链接库实现COM(COM技术内幕笔记之二)

    上一篇文章里,在一个CPP文件中实现了组件IX,IY,及组件CA,以及在客户端对接口的查询,但其还不是一个COM,COM的许多特性还没有被展现出来.比如,用动态链接库实现,没有这个我就不能根据需要随意的加载和卸载组件,组件无法复用等功能。     以下这篇笔记将详细的介绍如何用动态链接库实现COM组件。     首先,我们先完成我们所需的接口的创建工作,这样,COM组件就会根据其接口实现...

weixin_34399060的博客 189
上一篇: 读取带有标记文件的函数接口。
下一篇: C语言--容器的实现。
wtz1985
博客等级 码龄19年 64粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值