我需要为GNU/Linux分发一个二进制文件...
在Windows上,我可以运行一个名为"depends.exe“的实用程序,它将验证文件的所有依赖项,这样我就能够知道文件附带了什么,我如何在GNU/Linux上做同样的事情?
澄清:我的意思不是按字面意思分发它(除非它是一些永远不会产生问题的库,比如...libThatOnlyMySoftwareUseVersion0.00042895.08421thatnoonehas Kinda喜欢认为用户需要...)
发布于 2010-07-27 09:47:06
您要在Linux上查找的实用程序名为ldd。但是,请帮用户一个忙,不要考虑随程序一起分发库。要求您的用户通过适当的渠道安装必备组件。或者,更好的是,使用适当的安装系统(如RPM、apt或portage )打包您的软件(我假设您不能使用源代码分发和autotools);这样做允许包管理系统通过拉入任何所需的库来自动解决依赖关系。
使用ad-hoc方案分发库的版本只会给最终用户带来问题(这类似于Windows上的DLL地狱)。它们可能以冲突、崩溃和可能的安全漏洞而告终。
您可以使用ldd找出您的二进制文件依赖于什么库,以便您可以在制作包时设置适当的依赖项(一些打包程序,如RPM,实际上会为您做这件事)。
发布于 2010-07-27 09:37:16
在linux上,您可以尝试ldd。
发布于 2010-07-27 09:43:05
通常,您将为特定的linux发行版构建一个linux二进制文件,只需提供您自己的二进制文件,并要求用户安装其他部分。如果你使用的是使用rpm包的系统,你想要阅读关于如何构建rpm的知识;如果你使用的是Debian变体,那么你想看看apt二进制包是如何构建的。
如果您想手动检查二进制文件所链接的库,那么:
ldd /whereever/is/your/binary将为您提供动态链接二进制文件的链接库列表。但您不想分发其中的大多数,因为这就像尝试重新分发system32.dll或windows.dll一样糟糕的想法:^)
https://stackoverflow.com/questions/3340170
复制相似问题