LINUX.ORG.RU

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

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

В общем, это не так (если бы это было так, то закрытые приложения не могли бы использовать glibc)

В общем случае так и есть. Смотри пример про Maple. Сначала всё, что лежало в /opt тащило за собой собственную версию glibc или требовало фиксированной версии. В современных версиях придумали версионирование символов, что ломают саму идею динамических библиотек.

Ты утверждаешь, что инлайнинг помешает мне поставлять закрытую программу в виде набора *.o-файлов, при этом соблюдая LGPL?

Конечно. Тебе придётся придумывать какой-то инструмент, который из новой версии библиотеки и твоего .o получит «modified version of the Linked Version to produce a modified Combined Work».

Со стандартным .o такое вообще невозможно, так как на коде не написано, откуда он взят. И, например, кусок

if (lib_f1()) lib_f2();
может быть вообще выкинут, если компилятор может убедиться, что функция lib_f1 чистая и всегда возвращает 0. А в следующей версии lib_f1 может читать конфигурационный файл, но в .o даже места нет, куда её вставить.

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

В общем, это не так (если бы это было так, то закрытые приложения не могли бы использовать glibc)

В общем случае так и есть. Смотри пример про Maple[/гrl]. Сначала всё, что лежало в /opt тащило за собой собственную версию glibc или требовало фиксированной версии. В современных версиях придумали версионирование символов, что ломают саму идею динамических библиотек.

Ты утверждаешь, что инлайнинг помешает мне поставлять закрытую программу в виде набора *.o-файлов, при этом соблюдая LGPL?

Конечно. Тебе придётся придумывать какой-то инструмент, который из новой версии библиотеки и твоего .o получит «modified version of the Linked Version to produce a modified Combined Work».

Со стандартным .o такое вообще невозможно, так как на коде не написано, откуда он взят. И, например, кусок

if (lib_f1()) lib_f2();
может быть вообще выкинут, если компилятор может убедиться, что функция lib_f1 чистая и всегда возвращает 0. А в следующей версии lib_f1 может читать конфигурационный файл, но в .o даже места нет, куда её вставить.