如果我运行类似的东西:
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 之外,很少有库使用符号版本控制。