我有一个共享库(.so文件),我的应用程序需要这个库,我想知道最好的分发方式是什么?
这不是可以通过apt-get安装的东西,为了运行应用程序,我需要将它放在LD路径中。
我有一个共享库(.so文件),我的应用程序需要这个库,我想知道最好的分发方式是什么?
这不是可以通过apt-get安装的东西,为了运行应用程序,我需要将它放在LD路径中。
过去我需要包括一个单独的“启动脚本”,用户需要点击它而不是直接点击Linux可执行文件。启动脚本将设置LD_LIBRARY_PATH以包括存储共享库的目录,然后启动可执行文件。以下是参考脚本(它假定可执行文件和共享库都隐藏在名为“bin”的子文件夹中,并且可执行文件的名称与脚本的名称相同,但没有“.sh”后缀):
#!/bin/bash
appname=$(basename "$0" .sh)
dirname=$(dirname "$0")
cd "$dirname/bin"
export LD_LIBRARY_PATH=$(pwd):$LD_LIBRARY_PATH
./$appname "$@"
export LD_LIBRARY_PATH=$(pwd):$LD_LIBRARY_PATH
吗?这样,如果程序运行其他东西,就会使用正确的其他库路径。当然,这就是我在你的脚本类似物中一直做的事情。鉴于它是Linux,您可以安全地假设 $0
对于脚本具有绝对路径,但实际上并非每个平台都是这样。经典地,$0
只包含程序或脚本的基本名称。 - Jonathan Leffler将它与依赖它的可执行文件一起打包,以相同的方式分发。
如果您没有编写该库,请确保遵守其重新分发的许可条款。
/usr/lib/
或其他LD目录中时才会被识别? - Steven
ld.so
查找的路径中即可。 - Some programmer dude