Почему gcc не версионирует свой рантайм?
Приветствую! Друзья, расскажите, почему gcc не соблюдает собственные GNUтые правила libtool.
Например, картина для рантайма gcc 9.2:
/usr/lib/libasan.so.5.0.0 /usr/lib/libatomic.so.1.2.0 <- не меняется годами /usr/lib/libgcc_s.so.1 <- постоянное значение как минимум с gcc 4.x.x /usr/lib/libgdruntime.so.76.0.3 /usr/lib/libgfortran.so.5.0.0 /usr/lib/libgo.so.14.0.0 /usr/lib/libgomp.so.1.0.0 <- постоянное значение как минимум с gcc 4.x.x /usr/lib/libgphobos.so.76.0.3 /usr/lib/libitm.so.1.0.0 <- не меняется годами /usr/lib/liblsan.so.0.0.0 <- не меняется годами /usr/lib/libobjc.so.4.0.0 <- не меняется годами /usr/lib/libquadmath.so.0.0.0 <- постоянное значение как минимум с gcc 4.x.x /usr/lib/libstdc++.so.6.0.27 <- многие годы вечный 6.0.x /usr/lib/libtsan.so.0.0.0 <- не меняется годами /usr/lib/libubsan.so.1.0.0 <- не меняется годами
Почему так?
- Revision почти всегда 0. Должен увеличиваться с каждым релизом.
- Minor ( =Age) почти всегда 0. Должен увеличиваться при добавлении новых интерфейсов.
- Major ( =Current-Age) либо не меняется, либо меняется крайне неспешно. Должен увеличиваться при сломе обратной совместимости.
libstdc++.so версионируются, но странно. В gcc 9.2 она имеет обозначение 6.0.27, и в gcc 4.7.4 — 6.0.17. Если верить такому обозначению, то между этими версиями в библиотеку не было добавлено ни одного интерфейса, что бред.
Видно, что активно версионируются только libgo.so, libgphobos.so, libgdruntime.so.
()