我正在编写一个使用 OpenAL 的程序。当我链接到它(我正在使用 CMake)时,它也链接到 libpulse - PulseAudio。这导致二进制文件无法在其他系统上运行。我能否以某种方式不链接 PulseAudio 并仍然在 Ubuntu 上使用 OpenAL?
编辑: 我刚刚想通了一些事情:将 PulseAudio 拖入的不是 OpenAL,而是 SDL。有什么我可以做的吗?
我正在编写一个使用 OpenAL 的程序。当我链接到它(我正在使用 CMake)时,它也链接到 libpulse - PulseAudio。这导致二进制文件无法在其他系统上运行。我能否以某种方式不链接 PulseAudio 并仍然在 Ubuntu 上使用 OpenAL?
编辑: 我刚刚想通了一些事情:将 PulseAudio 拖入的不是 OpenAL,而是 SDL。有什么我可以做的吗?
在要为其提供二进制包的每个平台上单独构建二进制文件,并确保分发源代码,以便其他平台上的人可以自己构建它。
请注意,Linux 专注于源代码兼容性而不是二进制兼容性。大多数发行版彼此不兼容二进制(甚至 Ubuntu 和 Debian 也不完全兼容*)。
这是一个有点相关的问题: 从技术上讲,与其他 Linux 发行版相比,Ubuntu 有什么不同?
关于 SDL pulseaudio,您可以简单地安装 libsdl1.2debian-alsa,它将删除 pa-sdl 版本并链接到 ALSA 库。您仍然可能会获得其他与二进制/库相关的兼容性,例如提到的 dv3500ea。避免与系统相关的依赖问题的常用方法是使用静态链接。这将使二进制文件更大,因为它们包含库中所需的代码。
有关静态链接检查的更多信息: http ://wiki.linuxquestions.org/wiki/Static_linking