【发布时间】:2018-02-28 08:58:06
【问题描述】:
我开始的情况是:
我在我的开发 PC 上编译 paraview 没有问题。 然后我为它编译了一些小插件 - 再次没有问题。 如果我在该 PC 上运行 paraview(我的编译版本或网页中的二进制文件),我可以加载并使用该插件。
问题:
我没有找到方法,如何使用 paraview 二进制文件让插件在其他计算机上运行。
当我在插件 .so 文件上运行 ldd 时,它告诉我找不到 paraview 库的列表,这些库是随二进制文件提供的:
libvtkPVClientServerCoreCore-pv5.4.so.1 => not found
libvtkCommonExecutionModel-pv5.4.so.1 => not found
libvtkCommonDataModel-pv5.4.so.1 => not found
libvtkClientServer-pv5.4.so.1 => not found
libvtkCommonCore-pv5.4.so.1 => not found
显然,该插件依赖于 paraview 库(到目前为止还有意义),但它无法找到。现在我应该承认,paraview 并没有真正安装在 linux 系统上,只是作为二进制分发下载。我知道 Linux 中常见的库搜索路径。我现在的问题是,这个插件是为一群用户开发的,我和我没有直接关系。他们会以某种方式下载 paraview 并让它运行。我不能依赖他们将二进制文件放入正确的路径来查找库。
有没有办法,如何将这些库与插件静态链接(尽管这完全违背了共享库的想法)?任何 Cmake 定义,我错过了吗?
我发现了这个类似的帖子here,但我真的无法利用它。
【问题讨论】:
-
Is there a way, how to statically link these libraries with the plugin- 您需要 静态库 才能静态链接它们。我不是 Paraview 专家,但 it seems 你可以使用-DBUILD_SHARED_LIBS=OFF选项到cmake使用静态库来构建它。 -
感谢您的回复!我知道我可以用不同的方式编译 paraview 本身。但我需要我的插件与 paraview 版本一起使用,因为它是从网页提供的。
-
I need my plugin to work with the paraview version as it is supplied from the webpage.- 而且,据我了解您的情况,网页提供的 ParaView 可以在发展时更改,对吗?如果是这样,您需要链接动态库,并且应该在客户 PC 上找到这些库。这意味着,如果客户将库放入非系统目录,他/她应该调整环境变量以便可以找到这些库。这种情况在任何图书馆都很常见。
标签: cmake shared-libraries paraview