Tho*_*son 5 deployment ubuntu build web-deployment graphicsmagick
我想将一个独立版本的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.
小智 6
解决方案是从源代码构建GraphicsMagick并使用选项--disable-shared --disable-installed进行配置.这将生成一个静态可重定位的可执行文件,它只依赖于系统上已有的共享库.通过'make DESTDIR =/tmp/gminstalldir install'之类的东西安装到临时目录中进行打包.您还需要评估哪些库在目标操作系统上是标准可用的(因此可以依赖它们)并添加配置选项以禁用不确定可用的库,或者链接到库的静态版本所以它包含在'gm'二进制文件中.
另一个解决方案是获取库存'gm'二进制文件并创建一个shell脚本包装器,它设置某些环境变量(例如LD_LIBRARY_PATH),以便它仍然可以运行.这种方法会增加一些运行时开销,并需要一些试验/错误才能使其正常工作.
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |