linux音频库的静态链接

linux音频库的静态链接,linux,linker,alsa,pulseaudio,jack,Linux,Linker,Alsa,Pulseaudio,Jack,我正在开发一个针对Windows和Linux的音频库。对于Windows后端,我支持DirectSound、WASAPI和ASIO;对于Linux,我支持ALSA、JACK和PulseAudio。最近,c/c++运行时(msvcrt/libc/libgcc/libstdc++)的静态链接与共享/动态链接以及其他依赖项的主题出现了,因为它们是自包含的,并且与库版本无关。我决定为Windows静态链接所有东西(DirectSound、WASAPI、ASIO和msvcrt),因为DirectSound

我正在开发一个针对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来说,事情似乎有点复杂。这表明,通过静态链接libgcc和libstdc++,我是相当安全的,但libc本身并不安全(如果我错了,请纠正我)。但我完全不知道如何处理libasound、libpulse和libjack-jackd2。APT包甚至似乎只提供.so's,而不是.a's

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

如果有什么不同的话,主要目标(目前)是围绕nuget.org上的.NET和Maven central上的Java的本机二进制文件发布包装器库。我只希望包的使用者能够说“packagereference include=audiolib”,并完成它,然后能够在广泛的平台上运行

非常感谢来自ALSA/Pulse/JACK团队的人员能够对此有所了解,因为至少有一些关于静态链接GCC运行时的材料,但在特定的音频库中几乎没有