我正在编写一个使用 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