【发布时间】:2011-05-25 09:59:25
【问题描述】:
我有一个程序需要特定版本的库(例如 libgstreamer),因此旧版本将无法运行。由于延迟链接,我的程序可能会链接到 gstreamer 版本 10.23,它缺少我使用的 10.25 中存在的一些符号。我的问题是,如何在不使用包管理器的情况下检查安装了哪个版本的库。是否可以从 C 程序加载库并使用 dlopen() 检查其版本号?
编辑:我正在使用 Linux 系统
编辑 2:也许我可以使用 readelf -V ?
谢谢!
【问题讨论】:
-
可能您可以链接到 libgstreamer.so.X.XX 而不是 libgstreamer.so。另请看:faqs.org/docs/Linux-HOWTO/…
-
在 Windows 上,您只需在应用程序清单中指定依赖程序集的最低可接受版本号,操作系统会处理它。可悲的是,posix 开发人员仍然认为针对版本化软链接系统的链接更优越,而 windows 开发人员不知道如何为共享组件创建程序集。
-
@RedX:为什么不把它放在答案中?
-
@RedX:是的,应该可以。但是,这会将程序锁定为恰好一个版本,而通常只需要某个最低版本。
标签: c linux unix gcc dynamic-linking