2010-08-23 26 views
2

我想知道哪个Linux发行版最好(即引入最少的依赖关系),当链接一个应该尽可能多的发行版对共享库的工作的二进制文件。我应该链接哪个Linux发行版以获得最佳二进制兼容性?

我已经在Ubuntu上完成了它,但依赖列表是可怕的。 SDL引入了PulseAudio等等。我的下一个猜测是使用Debian lenny--在你看来,最好的发行版本是什么?

+0

投票结束,因为这显然是一个主观的问题,在不同的发行版上有太多的意见......并且这不是一个编程问题....请参考Superuser.com或serverfault.com – t0mm13b 2010-08-23 20:58:01

+1

我不是问哪个分布是“最好的”,我要求提供分布的建议,尽可能少地引入依赖关系。这不是关于编程,而是编译 - 与IMO有关。 – Noarth 2010-08-23 21:08:24

+1

问题是相关的。 – ypnos 2010-08-24 09:12:19

回答

0

如果您看QT文档http://doc.trolltech.com/4.6/deployment-x11.html“创建应用程序包”部分,他们建议创建一个像Mac包一样的包,并使用shell脚本启动它。

你可以做同样的事情;你将不得不创建你需要的库,并将它们包含在你的包中,这会使它更大。至少这应该鼓励你只链接到你需要的库:)

+0

很好的链接,谢谢。我计划包含所有必需的共享对象 - 除了LSB库之外。你建议我自己建立我需要的库吗?我可能会构建如果我这样做的话,SDL几乎没有依赖关系,但我不确定我可以如何教CMake与之相关联。 – Noarth 2010-08-24 04:52:51

+0

我没有看到需要重建已经构建的库,只要您有权重新包装它们与您的应用程序,并且您的应用程序将动态链接到它们。如果你自己构建它们,你会更了解它们的依赖关系。 – koan 2010-08-24 11:03:34

+0

是的,我也可以摆脱一些。我正在查看WorldOfGoo附带的libSDL,它有大约6个依赖关系。然而,在Ubuntu上安装的软件包大约有10个。另外,这些库需要比libstdC++和libc更新的版本。 Debian lenny。 – Noarth 2010-08-24 18:14:34

3

如果您不想发布源代码并使用安装脚本在目标系统上编译它,请提供静态链接的所有内容或发布自己的文件,并在用于启动您的脚本中使用LD_LIBRARY_PATHLD_PRELOAD环境变量可执行文件。 (关于如何完成的一个例子可以在mozilla firefox包装中看到)

也有法律问题适用:从不使用GPL代码。并且永远不要与LGPL代码进行静态链接(以及其他问题)。

任何其他解决方案都会给运气好坏带来太多空间,并且只会产生挫折感。

+0

哦,非常好的提示与静态链接和LGPL代码,我会错过的... – Noarth 2010-08-24 04:53:41

1

如果我没有记错,在一个将pulseaudio作为SDL依赖项的发行版上与SDL链接并不意味着您的程序必须始终与每个发行版中的pulseaudio链接。你实际上不必在编译器上输入-lpulseaudio,是吗?我的Ubuntu盒子上的sdl-config --libs没有列出它。

+0

它没有列出pulseaudio,但如果你检查libDDL的libSDL.so,它会列出pulseaudio等其他东西。 – Noarth 2010-08-24 04:24:54

+1

问题是你的编译的二进制文件只包含libSDL.so引用,而不是对pulseaudio的引用。在目标机器上,动态链接器只会尝试首先解析您对libSDL.so的引用。然后,如果libSDL.so引用其他库,它将搜索它们。他们可能包括pulseaudio,可能不会。您的二进制文件将无需pulseaudio即可连接。 – ypnos 2010-08-24 09:15:48

1

为Linux生成软件的正确方法是将每个版本的源代码tarball放在你网站的稳定位置,并让分布处理所有其他事情。不要尝试自己制作二进制文件。你会从无尽的悲伤中拯救自己。

+0

它不是开源的。我想这就是Linux上专有软件的祸害:) – Noarth 2010-08-24 04:25:16

+1

那么,在这种情况下,正确的做法是为每个你认为你的用户可能需要的发行版建立适当的,符合策略的软件包(我至少会做Fedora, Debian和SuSE)。 Skype的人们这样做,它对最终用户来说效果不错。对于你来说,比纯粹的源代码发布工作要多得多,但是与静态链接或依赖最小化相比,它的工作量还是比较少。 – zwol 2010-08-24 05:01:02

相关问题