Newlib: встроенный против рабочего стола

Я собираю набор инструментов для Linux на основе Newlib для игрушечного проекта.

Официальная страница Newlib сообщает:

Newlib - это библиотека C, предназначенная для использования во встроенных системах.

но без указания какой-либо конкретной причины.

То, что я пытаюсь выяснить, это:

  1. Почему newlib считает себя встроенным "только"?
  2. Каковы недостатки его использования в настольных или серверных средах?

1 ответ

Решение

В отличие от Glibc, который имеет очень специфический код, чтобы обеспечить возможность его замены более поздними версиями, совместимыми с API, Newlib не таков; и при этом это не поддерживает динамическое соединение в любом случае. И не имеет большого смысла статически связывать в библиотеке C каждый возможный исполняемый файл в среде рабочего стола. Поэтому Newlib в основном подходит для встроенных целей с небольшим количеством статически связанных исполняемых файлов.

Newlib также выполняет только части стандартной библиотеки C и минимальную часть расширений библиотеки POSIX C. В частности, это не касается сети вообще. Это несколько спорно, если кто - нибудь в здравом уме, хотели бы построить настольную систему без каких - либо сетей на всех, в 2017 году.

Следует также отметить нетехнический аспект лицензирования. Glibc использует лицензию LGPL, которая разрешает связывание с проприетарными программами, при условии, что (обратите внимание, что IANAL) пользователь может заменить лицензированную LGPL библиотеку другой. На практике это означает, что либо библиотека динамически связана, либо, в случае статически связанной библиотеки, пользователю предоставляются объектные файлы, которые они могут использовать для связи с библиотекой замены для создания исполняемого файла. Это означает, что сама лицензия может не подходить для небольших встроенных систем с проприетарным программным обеспечением. Newlib не содержит код LGPL, если он не создан для целей Linux.

Другие вопросы по тегам