我想知道在链接应该在尽可能多的发行版上针对共享库工作的二进制文件时,哪个 Linux 发行版最好(即引入最少的依赖项)。
我已经在 Ubuntu 上完成了,但是依赖项列表很糟糕。SDL 引入了 PulseAudio 等。我的下一个猜测是使用 Debian lenny——你认为最好的发行版是什么?
我想知道在链接应该在尽可能多的发行版上针对共享库工作的二进制文件时,哪个 Linux 发行版最好(即引入最少的依赖项)。
我已经在 Ubuntu 上完成了,但是依赖项列表很糟糕。SDL 引入了 PulseAudio 等。我的下一个猜测是使用 Debian lenny——你认为最好的发行版是什么?
如果您不想发布源代码并使用安装脚本在目标系统上编译它,则提供静态链接的所有内容或发布您自己的 so 文件,并在用于启动可执行文件的脚本中使用LD_LIBRARY_PATH
和环境变量。LD_PRELOAD
(有关如何完成的示例可以在 Mozilla firefox 包装中看到)
还适用法律问题:切勿使用 GPL 代码。并且永远不要静态链接到 LGPL 代码(以及其他问题)。
任何其他解决方案都会为好运或坏运留下太多空间,只会产生挫败感。
如果我没记错的话,在一个具有 pulseaudio 作为 SDL 依赖项的发行版上链接 SDL 并不意味着您的程序必须始终与每个发行版上的 pulseaudio 链接。您实际上不必-lpulseaudio
在编译行上放一个,对吗? sdl-config --libs
在我的 Ubuntu 盒子上没有列出它。
为 Linux 制作软件的正确方法是将每个版本的源代码压缩包放在您网站上的稳定位置,然后让发行版处理其他所有内容。不要尝试自己生成二进制文件。你将把自己从无尽的悲伤中解救出来。
如果您查看 QT 文档,http://doc.trolltech.com/4.6/deployment-x11.html “创建应用程序包”部分,他们建议创建一个类似于 Mac 包的包,并使用 shell 脚本启动它。
你可以做同样的事情;你必须创建你需要的库并将它们包含在你的包中,这将使它变得更大。至少这应该鼓励你只链接到你需要的库:)