应用程序的依存关系
附加库
以上的命令会列出应用程序所有共享库的依存关系。根据配置情况的不同,这些库需随应用一同重新发布(分发)。特别地,当使用的编译器是和目标主机编译器二进制不兼容时(例如:32位的机器 64位版本的程序),所使用的c++库应重新发布。如果可以,最安全的形式是以静态方式来链接这些库。
你可能想动态的去链接X11 库,可当某些执行步骤试图使用dlopen()去打开其他共享的库,而出现失败时,x11库可能会导致你的应用崩溃。
同样需要提及的,Qt会去寻找特定的x11扩展,像是Xinerama和Xrandr,它们会在程序运行时被使用,包括它们链接的所有库。如果你不能确保一个特定扩展的存在,最安全的方式是在配置qt时,将它们禁止(例如: ./configure -no-xrandr)。
FontConfig (字体配置) 和 FreeType 是经常可能出现不兼容问题的库。就像它们听起来很陌生是的, 一些软件供应商已经在老板的机器上编译成功,并且不去轻易升级使用它们的软件。
当链接你的应用是以静态qt库方式时,你必须明确的链接以上提到的独立库。当然,也可以将它们添加到工程文件中的LIBS变量中。
qt插件
在qt5下,所有具有图形界面的应用都需要一个执行QPA(Qt Platform Abstraction) 层的插件,在linux下,平台插件是libqxcb.so,这个插件需要位于发布包中特定的子目录下。另外,如上所述,也可通过改变搜索路径的方式去找到那个插件。
你的应用可能包含一个或多个插件,像是JPEG图像格式插件,SQL驱动插件。确保在你应用下,所使用的插件都一同被发布。与平台插件类似的是,每个插件也需要位于发布包中特定的子目录下。
注意: 如果你的应用使用qt webkit 来显示网页,你应该包含所有的文本编码插件,以便尽可能的支持多种HTML编码
qt插件的搜索路径(像是其他一些路径)被硬编码于qtcore库中。默认地,插件的第一搜索路径是/path/to/Qt/plugins.像上文所提及的那样,使用预定义的路径有明显的缺点,所以你需要使用多种方式来检验程序是否可以找到插件:
1 Using
How to Create Qt Plugins 将会列出当你建立和部署插件时,需要关注的主题。
附加库
在多数的类unix系统中,使用ldd工具,可以找出应用程序所依赖的库文件:
ldd ./application
以上的命令会列出应用程序所有共享库的依存关系。根据配置情况的不同,这些库需随应用一同重新发布(分发)。特别地,当使用的编译器是和目标主机编译器二进制不兼容时(例如:32位的机器 64位版本的程序),所使用的c++库应重新发布。如果可以,最安全的形式是以静态方式来链接这些库。
你可能想动态的去链接X11 库,可当某些执行步骤试图使用dlopen()去打开其他共享的库,而出现失败时,x11库可能会导致你的应用崩溃。
同样需要提及的,Qt会去寻找特定的x11扩展,像是Xinerama和Xrandr,它们会在程序运行时被使用,包括它们链接的所有库。如果你不能确保一个特定扩展的存在,最安全的方式是在配置qt时,将它们禁止(例如: ./configure -no-xrandr)。
FontConfig (字体配置) 和 FreeType 是经常可能出现不兼容问题的库。就像它们听起来很陌生是的, 一些软件供应商已经在老板的机器上编译成功,并且不去轻易升级使用它们的软件。
当链接你的应用是以静态qt库方式时,你必须明确的链接以上提到的独立库。当然,也可以将它们添加到工程文件中的LIBS变量中。
qt插件
在qt5下,所有具有图形界面的应用都需要一个执行QPA(Qt Platform Abstraction) 层的插件,在linux下,平台插件是libqxcb.so,这个插件需要位于发布包中特定的子目录下。另外,如上所述,也可通过改变搜索路径的方式去找到那个插件。
你的应用可能包含一个或多个插件,像是JPEG图像格式插件,SQL驱动插件。确保在你应用下,所使用的插件都一同被发布。与平台插件类似的是,每个插件也需要位于发布包中特定的子目录下。
注意: 如果你的应用使用qt webkit 来显示网页,你应该包含所有的文本编码插件,以便尽可能的支持多种HTML编码
qt插件的搜索路径(像是其他一些路径)被硬编码于qtcore库中。默认地,插件的第一搜索路径是/path/to/Qt/plugins.像上文所提及的那样,使用预定义的路径有明显的缺点,所以你需要使用多种方式来检验程序是否可以找到插件:
1 Using
qt.conf
.因为其最具有灵活性,这种方法被重点推荐2 使用QApplication::addLibraryPath() 或 QApplication::setLibraryPaths() 函数
How to Create Qt Plugins 将会列出当你建立和部署插件时,需要关注的主题。