分解共享库文件的 rpm 标识符

分解共享库文件的 rpm 标识符

如果我运行类似的东西:

rpm -q --fileprovide foo-1.0.0-0.x86_64

我得到一个文件列表,其中一些文件的右侧有一个标识符,例如:

/usr/lib64/bar.so.4        bar.so.4()(64bit)

据我所知,这些标识符似乎有 3 个组成部分,包括 SONAME、()、(CPU-ARCH)。但是,我在网上找不到这些组件的正式名称,也找不到您所说的右侧标识符。为什么有一个空的(),里面可以有什么值?这一切似乎都遵循某种约定,只是不知道它是什么......

答案1

RPM 使用 soname 跟踪库,就像 ELF 链接器/加载器一样。

当版本化符号添加到 glibc 时,RPM 在第一组括号内附加唯一版本。有关许多示例,请参阅“rpm -q --fileprovide glibc”。

当添加multilib(同一系统上的32位和64位库)时,会附加一个“(64位)”标记来区分。

不幸的是,沟通不畅导致在没有版本符号的库中添加了一个空的“()”。原则上,符号版本会出现在空的“()”中,但除了 glibc 之外,很少有库使用符号版本控制。

相关内容