Если я запускаю это в Docker ubuntu:latest
:
root@4304dfbfa661:/# ls lib/x86_64-linux-gnu/libc* -l
-rwxr-xr-x 1 root root 1868984 Jan 15 02:51 lib/x86_64-linux-gnu/libc-2.23.so
lrwxrwxrwx 1 root root 12 Jan 15 02:51 lib/x86_64-linux-gnu/libc.so.6 -> libc-2.23.so
Кажется, что libc
пронумеровано как 6 и 2-23.Почему есть два номера версий?
NB libc
(идиосинкразивно) исполняемый файл, и его запуск дает
root@4304dfbfa661:/# ./lib/x86_64-linux-gnu/libc.so.6
GNU C Library (Ubuntu GLIBC 2.23-0ubuntu10) stable release version 2.23, by Roland McGrath et al.
Так что это libc.so.6
, что удивительно.Есть ли у libc
[или, если быть точным, glibc
] сонамы, не связанные с номерами версий?
Редактировать: , чтобы уточнить, я понимаю символическую ссылку.Что меня смущает, так это наличие двух схем нумерации.Если вы посмотрите, например, libstdc ++, вы обнаружите, что
lrwxrwxrwx 1 root root 19 Sep 11 2017 ./usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
-rwxr-xr-x 1 root root 995840 Aug 1 2017 ./usr/lib64/libstdc++.so.6.0.19
Имеет foo.so.6
символическую ссылку на foo.so.6.0.19
, имеет смысл.Наличие foo.so.6
в качестве символической ссылки на foo-2.23.so
сбивает с толку ...