Безопасно ли заменять среду выполнения C ++ системного уровня GCC версией более новой версии GCC? - PullRequest
5 голосов
/ 30 июля 2010

Программы для Linux C ++ создаются с использованием ссылки GCC для библиотек libgcc_s.so.1 и libstdc++.so.6, каждая из которых содержит несколько ABI: более новые версии содержат ABI из предыдущей версии плюс новые. В документе политики GCC ABI говорится, что программы, созданные при более старом времени выполнения, должны запускаться с новым временем выполнения.Таким образом, теоретически более старые двоичные файлы должны работать на новых системах.

Если у меня есть система с более старым временем выполнения и я не хочу испытывать трудности с обновлением GCC в этой системе, могу ли я заменитьвышеупомянутые библиотеки с новыми?Теоретически все старые исполняемые файлы, которые ссылаются на него, должны работать (включая сам GCC), но это похоже на кучу.

Безопасно ли это делать?

1 Ответ

4 голосов
/ 10 августа 2010

Может быть , но я не рекомендую этого, по крайней мере, не без тщательного тестирования, которое почти наверняка съест любую прибыль. И вот почему:

  • «Совместимость с ABI» не обязательно означает «совместимость с ошибками». Даже если поддерживается совместимость с ABI, ваши приложения могут по-прежнему работать неожиданно, если они каким-то образом зависят от поведения, которое было некорректным в предыдущей версии библиотеки.
  • Могут быть новые ошибки, которые в конечном итоге будут ломать ваши приложения, опять же, не будучи несовместимыми с ABI.
  • Если вы не скомпилируете новые библиотеки точно правильно , они могут не быть ABI-совместимыми.
  • Вы уверены, что оригинальные библиотеки были скомпилированы из первоисточников GNU? Возможно, были патчи, о которых вы не знаете. Если вы не уверены в этом, вы не можете быть уверены в совместимости вашей существующей системы / приложений.

Какова ваша цель здесь? Если вы просто хотите иметь возможность компилировать приложения C ++, использующие новые функции, вы можете установить новую версию GCC вместе с оригиналом, вам просто нужно убедиться, что все библиотеки, которые вы используете, также собраны с новой версией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...