动态库:libXXXX.so shared object
静态库:linXXXX.a archive
静态库在链接为可执行文件时就将静态库包含到可执行文件中了,所以可执行文件大,但不依赖所调用的静态库文件了,但是如果静态库文件变动了就要重新链接。
在linux中静态库由ar命令生成,在windows或dos中,由lib命令生成。
在linux系统中可用的库都存放在/usr/lib和/lib目录中。库文件名由前缀lib和库名以及后缀组成。根据库的类型不同,后缀名也不一样。
共享库的后缀名由.so和版本号组成,静态库的后缀名为.a。
静态库的名字一般为libxxxx.a,其中xxxx是该lib的名称
动态库的名字一般为libxxxx.so.major.minor,xxxx是该lib的名称,major是主版本号,minor是副版本号
动态库在链接为可执行文件时在可执行文件中只是包含了所调用库的名字和函数等的信息,需要在运行时有操作系统帮助实现具体的解析和调用,当然这是隐含式的调用动态库中的函数,也可以显式调用,就像windows中的loadlibrary和getprocessaddress以及linux中的dlopen和dlsym。
在linux中动态库由gcc编译器生成,在windows中由编译器生成。 |