动态链接库及静态链接库(windows下的.dll .lib和linux下的.so .a

动态链接库及静态链接库(windows下的.dll .lib和linux下的.so .a


2024年5月30日发(作者:)

动态链接库及静态链接库(windows下的.dll .lib和linux下的.so .a)

库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:

libhello.a

为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如:

.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建

立符号连接的方式。

ln -s .1.0 .1

ln -s .1

使用库

当 要使用静态的程序库时,连接器会找出程序所需的函数,然后将它们拷贝到执行文

件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。然 而,对

动态库而言,就不是这样。动态库会在执行程序内留下一个标记‘指明当程序执行时,首

先必须载入这个库。由于动态库节省空间,linux下进行连接的 缺省操作是首先连接动态

库,也就是说,如果同时存在静态和动态库,不特别指定的话,将与动态库相连接。

现在假设有一个叫hello的程序开发包,它提供一个静态库libhello.a 一个动态库

,一个头文件hello.h,头文件中提供sayhello()这个函数

/* hello.h */

void sayhello();

另外还有一些说明文档。这一个典型的程序开发包结构

1.与动态库连接

linux默认的就是与动态库连接,下面这段程序testlib.c使用hello库中的sayhello()

函数

/*testlib.c*/

#include

#include

int main()

{

sayhello();

return 0;

}

使用如下命令进行编译


发布者:admin,转转请注明出处:http://www.yc00.com/web/1717048081a2733267.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信