LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

В линуксе нельзя статически прилинковать libc не сломав при этом всё.

musl. Но вообще да, проблема существует.

В винде не важно - линкуется ли libc статически илитдинамически - ты можешь загрузить все нужные тебе версии в процесс и они не ломают друг друга и не ломают софт на этом завязанный.

В винде еще и резолвинг имён при линковке иначе осуществляется.

Чтобы в линуксе было так же - надо вытащить системно-критические фичи вроде аллокатора и динамического загрузчика, а libc релаизовывать поверх. Тогда можно будет без проблем эти libc тащить с собой, не важно статически или в виде пакетов (аналога vcredist)

Я не вижу, как вытаскивание аллокатора и динамического загрузчика поможет решить проблему. Можешь привести кейсы, когда это актуально?

У glibc другая проблема со статической линковой - nss. Вся nss-машинерия, по хорошему, должна быть вынесена в отдельный процесс и запускаться как системный сервис. А программы бы просто подключались к нему по RPC. В libc остался бы простой переходник, в котором нечему ломаться по ABI.

Вообще качество архитектуры у GNU очень удручает. И архитектурные/инфраструктурные просчёты не чинятся десятилетиями, никто даже не пытается.

Исходная версия wandrien, :

В линуксе нельзя статически прилинковать libc не сломав при этом всё.

musl. Но вообще да, прблема существует.

В винде не важно - линкуется ли libc статически илитдинамически - ты можешь загрузить все нужные тебе версии в процесс и они не ломают друг друга и не ломают софт на этом завязанный.

В винде еще и резолвинг имён при линковке иначе осуществляется.

Чтобы в линуксе было так же - надо вытащить системно-критические фичи вроде аллокатора и динамического загрузчика, а libc релаизовывать поверх. Тогда можно будет без проблем эти libc тащить с собой, не важно статически или в виде пакетов (аналога vcredist)

Я не вижу, как вытаскивание аллокатора и динамического загрузчика поможет решить проблему. Можешь привести кейсы, когда это актуально?

У glibc другая проблема со статической линковой - nss. Вся nss-машинерия, по хорошему, должна быть вынесена в отдельный процесс и запускаться как системный сервис. А программы бы просто подключались к нему по RPC. В libc остался бы простой переходник, в котором нечему ломаться по ABI.

Вообще качество архитектуры у GNU очень удручает. И архитектурные/инфраструктурные просчёты не чинятся десятилетиями, никто даже не пытается.