我有一个依赖于Qt,GDCM和VTK的应用程序,主构建环境是Qt.所有这些库都是跨平台的,可在Windows,Mac和Linux上进行编译.我需要在Windows上部署后将应用程序部署到Linux.我正在使用的vtk和gdcm的版本是git的主干版本(大约一个月前),比我在Ubuntu 11.04上获得的更新,这是我当前(也是唯一的)Linux部署目标.
部署依赖于这些类型库的应用程序的可接受方法是什么?
我应该在这里静态链接,以避免LD_LIBRARY_PATH?我看到有关LD_LIBRARY_PATH的报告存在冲突; 像这样的教程表明,修改库路径以通过系统重新启动使用共享库是"正确的方法".  其他人 建议我永远不要设置LD_LIBRARY_PATH.在默认版本的GDCM中,安装已经将库放入/usr/local/lib目录中,因此在运行时会看到这些库ldd <my program>.另一方面,VTK将其库放入/usr/local/lib/vtk-5.9,这不是大多数用户机器上的LD_LIBRARY_PATH的一部分,因此除非对系统进行某些更改,否则找不到它.将VTK文件复制到'/ usr/local/lib'不允许'ldd'查看文件.
那么,如何让我的应用程序看到VTK使用库?
在Windows上,部署dll非常简单,因为我可以将它们包含在安装程序中,并且应用程序可以找到它们,因为它们位于本地目录中.这种方法在Linux中不起作用,因此我将让用户从任何适当的源安装Qt,GDCM和VTK并使用默认位置,然后让应用程序指向这些默认位置.但是,由于VTK将内容放入非标准位置,我是否还希望用户修改LD_LIBRARY_PATH?我应该包含我想要的库的特定版本,然后弄清楚如何使可执行文件在本地目录中查找这些库并忽略它在库路径中找到的库?