【问题标题】:How to bundle GraphicsMagick with application?如何将 GraphicsMagick 与应用程序捆绑在一起?
【发布时间】:2013-03-16 10:19:28
【问题描述】:

我想将独立版本的 GraphicsMagick gm 二进制文件与应用程序捆绑在一起,这样我就不必在应该运行应用程序的服务器上构建和安装 GraphicsMagick 库。

详情

我正在创建一个构建系统,它可以生成一个包含整个 node.js 应用程序的 tar-ball,其中包括所有二进制依赖项(在我们的例子中是 node 二进制文件和 GraphicsMagick 库)。然后它将它上传到服务器,提取并运行它。

我尝试将它与预编译的 gm 二进制文件一起发布,但正如预期的那样,gm 依赖于多个库,所以我收到了像 gm: error while loading shared libraries: libGraphicsMagick.so.3: cannot open shared object file: No such file or directory 这样的错误。

我在本地运行 OSX,我们的服务器运行 Ubuntu。

【问题讨论】:

    标签: ubuntu deployment build web-deployment graphicsmagick


    【解决方案1】:

    解决方案是从源代码构建 GraphicsMagick 并使用选项 --disable-shared --disable-installed 进行配置。这将产生一个静态的可重定位可执行文件,它只依赖于系统上已有的共享库。通过“make DESTDIR=/tmp/gminstalldir install”之类的方式安装到用于打包的临时目录中。您还需要评估哪些库在目标操作系统上作为标准可用(因此可以依赖它们),并添加配置选项以禁用不能保证可用的库,或者链接到库的静态版本所以它包含在“gm”二进制文件中。

    另一个解决方案是获取库存的“gm”二进制文件并创建一个 shell 脚本包装器,该包装器设置某些环境变量(例如 LD_LIBRARY_PATH),以便它仍然可以运行。这种方法会增加一些运行时开销,并且需要一些试验/错误才能使其正常工作。

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2017-02-27
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多