我正在使用普通的X11应用程序。使用dlopen动态加载共享对象()
默认情况下,我的应用只需要libX11.so和标准的gcc C和数学库。 该应用程序可以扩展Xfixes,Xrender和ALSA音响系统的功能。 但是,这些(Xfixes,Xrender和ALSA)功能是可选的。
为了实现这种行为,我使用运行时加载,即libXfixes,libXrender和libasound应该是dlopen()。
因此,该应用程序可以在没有这些库的情况下运行。现在
我的问题:
What library names should I use when calling dlopen()?
我观察到的是,这些从发行到发行版不同。
例如,在openSUSE 11,他们命名为以下几点:
- libXfixes.so
- libXrender.so
- libasound.so
在Ubuntu,但是,名称有附加的版本号,如下所示:
- libXfixes.so.3
- libXrender.so.1
- libasound.so.2
所以试图打开 “libXfixes.so” 将无法在Ubuntu上,虽然LIB显然是有。 它只是附加了一个版本号。那么我的应用程序应该如何处理呢?
我应该让我的应用程序扫描/ usr/lib /第一个手动查看我们有哪些库,然后选择适当的?或者有没有人有更好的主意?
谢谢你们,
安迪
也看到这里的答复: http://stackoverflow.com/questions/15951672/loading-linux-libraries-at-runtime – AjayKumarBasuthkar 2014-03-07 12:11:03