linux 音频库的静态链接

问题描述

我正在开发一个同时面向 Windows 和 Linux 的音频库。对于 Windows 后端,我支持 DirectSound、WASAPI 和 ASIO,对于 Linux,它支持 ALSA、JACK 和 pulseAudio。最近出现了 c/c++ 运行时 (msvcrt/libc/libgcc/libstdc++) 和其他依赖项的静态与共享/动态链接主题,因为它们是独立的且与库版本无关。我决定静态链接 Windows 的所有内容(DirectSound、WASAPI、ASIO 和 msvcrt),因为 DirectSound 和 WASAPI 是内置的,我从源代码编译 ASIO。但对于 Linux,事情似乎有点复杂。这在这里https://insanecoding.blogspot.com/2012/07/creating-portable-linux-binaries.html 表明我通过静态链接 libgcc 和 libstdc++ 相当安全,但不是 libc 本身(如果我错了,请纠正我)。但我完全不知道如何处理 libasound、libpulse 和 libjack-jackd2。 APT 包甚至似乎只提供 .so,而不提供 .a。

所以我的问题基本上归结为:如何在 linux 上生成共享库 (.so),使用所有 libc、libgcc、libstdc++、libasound、libjack 和 libpulse,同时尽可能独立可能,要求最终用户尽可能少地安装,并在尽可能多的 linux 发行版上运行(对其他 *NIX 不感兴趣)。

如果有什么不同,主要目标(目前)是围绕这个本地二进制文件发布包装库,既适用于 nuget.org 上的 .NET,也适用于 Maven 中心的 Java。我只希望包的使用者能够说“packagereference include=audiolib”并完成它,然后能够在各种平台上运行。

如果来自 ALSA/pulse/JACK 团队的人能对此有所了解,我真的很感激,因为至少有一些关于静态链接 GCC 运行时的材料,但在特定的音频库上几乎没有。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)