如何使在 Ubuntu 上构建的程序(使用 SDL)在其他系统上运行?

如何使在 Ubuntu 上构建的程序(使用 SDL)在其他系统上运行?

我正在编写一个使用 OpenAL 的程序。当我链接到它时(我使用 CMake),它也会链接到 libpulse - PulseAudio。这导致二进制文件无法在其他系统上运行。我能以某种方式不是链接 PulseAudio 并仍在 Ubuntu 上使用 OpenAL?

编辑: 我刚刚想通了:拖累 PulseAudio 的不是 OpenAL,而是 SDL。我能做些什么吗?

答案1

在您想要提供二进制包的每个平台上分别构建二进制文件,并确保分发源代码,以便其他平台上的人们可以自己构建它。

请注意,Linux 注重的是源代码兼容性,而不是二进制兼容性。大多数发行版彼此之间并不二进制兼容(甚至 Ubuntu 和 Debian 也不完全兼容*)。

这是一个有点相关的问题: 从技术上讲,Ubuntu 与其他 Linux 发行版有何不同?

答案2

关于 SDL pulseaudio,您可以简单地安装 libsdl1.2debian-alsa,它将删除 pa-sdl 版本并链接到 ALSA 库。不过,您仍可能会获得其他二进制/库相关的兼容性,如提到的 dv3500ea。避免系统相关依赖性问题的常用方法是使用静态链接。这将使二进制文件变得更大,因为它们包含库中所需的代码。

有关静态链接检查的更多信息: http://wiki.linuxquestions.org/wiki/Static_linking

相关内容