库
库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)
静态库
在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。
特点:
1、静态库对函数库的链接是放在编译时期完成的。
2、程序在运行时与函数库再无瓜葛,移植方便。
3、浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件。
动态库
使用动态库的原因:
1、静态库会浪费空间。
2、静态库对程序的更新、部署和发布页会带来麻烦。如果静态库发生了更新,使用它的应用程序都需要进行重新编译,然后发布给用户。
动态库的特点:
1、动态库把对一些库函数的链接载入推迟到程序运行的时期。
2、可以实现进程之间的资源共享。(因此动态库也称为共享库)
3、将一些程序升级变得简单。
4、甚至可以真正做到链接载入完全由程序员在程序代码中控制(显示调用)。
linux下动态链接库:libxxx.so
windows下动态链接库:libxxx.dll
QT中引用其他工程的动态库:
编写pri文件:
$$PWD指当前目录
LIBS:-L指定库的目录,而-l指定库的名字(如果是在Linux下,则去掉lib和后缀名,windows下去掉后缀名即可)
然后把引用的库文件,以及需要使用的头文件和pri文件放在一个目录下
最后在本工程的pro文件下include引用pri文件即可