Ubuntu 如何将GraphicsMagck与应用程序捆绑?

Ubuntu 如何将GraphicsMagck与应用程序捆绑?,ubuntu,deployment,build,web-deployment,graphicsmagick,Ubuntu,Deployment,Build,Web Deployment,Graphicsmagick,我想将GraphicsMagickgm二进制文件的独立版本与应用程序捆绑在一起,这样我就不必在应用程序应该运行的服务器上构建和安装GraphicsMagick库 细节 我正在创建一个构建系统,该系统可以生成一个tar-ball,其中包含整个node.js应用程序,包括所有二进制依赖项(在本例中是节点二进制和GraphicsMagick库)。然后将其上传到服务器,提取并运行 我试着用一个预编译的gm二进制文件发送它,但正如预期的那样,gm依赖于多个库,所以我在加载共享库时遇到了类似gm:error

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

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

我试着用一个预编译的
gm
二进制文件发送它,但正如预期的那样,
gm
依赖于多个库,所以我在加载共享库时遇到了类似
gm:error的错误:libGraphicsMagick.so.3:无法打开共享对象文件:没有这样的文件或目录


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

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

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