2010-07-27 38 views
4

我需要分发的GNU/Linux的二进制文件...对了Depends.exe GNU/Linux的

在Windows上,我可以运行一个名为“带的Depends.exe”,将验证所有依赖该文件工具有,因此,我将能够知道该文件随附什么,我如何在GNU/Linux上做同样的事情?

澄清:我不是那个意思从字面上散发它(除非是一些特定的库,从来没有产生问题,如... libThatOnlyMySoftwareUseVersion0.00042895.08421thatnoonehas有点像盘算,用户将需要...)

回答

9

你正在寻找在Linux上的实用工具被称为ldd。但是,请帮助用户,并且不要考虑使用您的程序分发库。要求您的用户通过正确的渠道安装先决条件。或者,更好的是,使用适当的安装系统(如RPM,apt或portage)打包软件(假设您不能使用源代码分发和autotools);这样做允许包管理系统通过拉入任何所需的库来自动解决依赖关系。

使用ad-hoc方案分发版本库只会给最终用户带来问题(类似于Windows上的DLL地狱)。它们最终会导致冲突,崩溃和可能的安全漏洞。

您可以使用ldd找出您的二进制文件依赖于哪些库,这样您可以在制作包的时候设置适当的依赖关系(一些打包程序,比如RPM,实际上是为您做的)。

1

通常情况下,您将为特定的Linux发行版构建一个linux二进制文件,并提供您自己的二进制文件,并要求用户安装其他文件。如果您使用的是使用rpm包的系统,那么您需要阅读如何构建RPM,如果您使用的是Debian变体,那么您想了解如何构建二进制包。

如果你想手动检查哪些库二进制文件被链接到的则:

ldd /whereever/is/your/binary 

会给你链接库的列表动态链接二进制文件。但你不想分配这些大部分,因为它就像试图重新分配system32.dll或windows.dll糟糕的主意:^)

+1

什么是'system32.dll'和'windows.dll'? :P – 2010-07-27 01:55:41

+4

@Delan:我认为某种恶意软件;) – 2010-07-27 12:13:29

+0

@Dan +1以获得正确答案 – 2010-07-27 16:21:24