应用程序通常使用动态链接库吗?

Bev*_*vor 1 compiling dynamic-linking package-management

如果我想编译一个需要分发包管理器未提供的包的应用程序,并且我想从中生成一个分发包,使用此分发包的用户是否需要安装所有这些额外的库,或者将这些库打包到二进制文件中? 我知道它可能取决于应用程序到应用程序,但我如何识别包是否需要动态链接库?

jll*_*gre 6

ldd命令将判断您的二进制文件是否正在使用共享库。对于不属于分发包的那些,您可以将包的用户指向下载它们的位置,或者将库捆绑在您的包中,这对于用户来说当然是更简单的方法,假设图书馆许可证允许您这样做。

如果捆绑它们,请确保您构建的二进制文件会在编译时使用 LD_RUN_PATH 找到这些库,这比依赖 LD_LIBRARY_PATH 修复损坏的可执行文件更好。

有关详细信息,请参阅http://www.eyrie.org/~eagle/notes/rpath.html