记录一下遇到的问题:
Linux系统下Qt编译第三方动态库会生成多个.so文件,不了解的小伙伴可能很疑惑:
(1)Linux 下 QT 生成的(.o)、(.a)和(.so)三个文件的区别
(.o)就相当于windows里的obj文件;
(.a)即 linux 下的静态链接库(Statically Linked library),或称静态库;
(.so)即 linux 下的共享库(Shared library),或称动态库;
【备注】在VS中静态库的后缀名为(.lib);动态库的后缀名为(.dll)。
(2)Linux 下 QT 生成的(.so)、(.so.1)、(.so.1.0)和(.so.1.0.0)四个文件的区别
QT在生成动态库时,会默认生成(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)四个文件。
其中,(.so.1.0.0)为实际的动态库文件,(.so)、(.so.1)、(.so.1.0)均为软链接,都是指向(.so.1.0.0)的链接文件,为了版本控制。
如果不需要Qt生成版本控制,只要单独的so,在pro文件中添加:
CONFIG += plugin
加上之后,使用QCreator编译完之后只会生成一个.so文件;

本文解释了Linux下Qt编译过程中.o、.a、.so及其变体的区别,特别是.so文件的软链接特性,并指导如何在Qt项目中通过调整pro文件来控制动态库版本和生成文件数量。
3万+

被折叠的 条评论
为什么被折叠?



