首页 文章

如何将GraphicsMagick与应用程序捆绑在一起?

提问于
浏览
5

我想将一个独立版本的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 .

1 回答

  • 6

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

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

相关问题