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条)