1.库是预编译的目标文件(object files)的集合,它们可以被链接进程序。静态库以后缀为”.a”的特殊的存档存储,用于静态链接。
在linux环境中,使用ar命令创建静态库文件,生成目标文件.o,然后生成静态库.a。
使用静态库生成的可执行文件放在目标板中可以直接运行。
2.共享库,也是动态库,是在可执行程序启动时加载到执行程序中,可以被多个执行程序共享使用,使用动态库编译生成的程序相对较小,但运行时需要库文件支持。
共享库的制作,使用的gcc命令,首先创建object文件,创建共享库的输入文件可为.c/.cpp文件,用命令参数-shared表示创建共享库。
使用动态库生成的可执行文件,需将生成的动态库也拷贝到目标板的连接文件目录。
它们的区别:
静态库被程序静态链接于编译时,而共享库被动态链接于运行时。
静态库中不能包含共享库,而共享库中可以包含静态库。
当静态库中某个模块更新后,需要重新编译链接生成相应的可执行文件;若共享库中某个模块更新了,只要接口没有改变,就不需要重新编译链接生成可执行文件。