我正在开发一个普通的X11应用程序。
默认情况下,我的应用程序只需要libX11.so和标准的gcc C和数学库。该应用程序可以通过Xfixes、Xrender和ALSA音频系统来扩展功能。然而,这些(Xfixes、Xrender和ALSA)功能是可选的。
为了实现这种行为,我使用了运行时加载,即将libXfixes、libXrender和libasound dlopen()化。
因此,在这些库缺失的情况下,该应用程序仍能正常工作。
现在我的问题是:在调用dlopen()时应使用哪个库名称?
我观察到这些名称在不同的发行版之间有所不同。
例如,在openSUSE 11上,它们被命名为以下名称:
- libXfixes.so
- libXrender.so
- libasound.so
然而,在Ubuntu上,名称附带有版本号,就像这样:
- libXfixes.so.3
- libXrender.so.1
- libasound.so.2
我应该让我的应用程序手动扫描/usr/lib/,看看我们有哪些库,然后选择一个合适的库吗?还是谁有更好的建议?