Newlib: встроенный против рабочего стола
Я собираю набор инструментов для Linux на основе Newlib для игрушечного проекта.
Официальная страница Newlib сообщает:
Newlib - это библиотека C, предназначенная для использования во встроенных системах.
но без указания какой-либо конкретной причины.
То, что я пытаюсь выяснить, это:
- Почему newlib считает себя встроенным "только"?
- Каковы недостатки его использования в настольных или серверных средах?
1 ответ
В отличие от Glibc, который имеет очень специфический код, чтобы обеспечить возможность его замены более поздними версиями, совместимыми с API, Newlib не таков; и при этом это не поддерживает динамическое соединение в любом случае. И не имеет большого смысла статически связывать в библиотеке C каждый возможный исполняемый файл в среде рабочего стола. Поэтому Newlib в основном подходит для встроенных целей с небольшим количеством статически связанных исполняемых файлов.
Newlib также выполняет только части стандартной библиотеки C и минимальную часть расширений библиотеки POSIX C. В частности, это не касается сети вообще. Это несколько спорно, если кто - нибудь в здравом уме, хотели бы построить настольную систему без каких - либо сетей на всех, в 2017 году.
Следует также отметить нетехнический аспект лицензирования. Glibc использует лицензию LGPL, которая разрешает связывание с проприетарными программами, при условии, что (обратите внимание, что IANAL) пользователь может заменить лицензированную LGPL библиотеку другой. На практике это означает, что либо библиотека динамически связана, либо, в случае статически связанной библиотеки, пользователю предоставляются объектные файлы, которые они могут использовать для связи с библиотекой замены для создания исполняемого файла. Это означает, что сама лицензия может не подходить для небольших встроенных систем с проприетарным программным обеспечением. Newlib не содержит код LGPL, если он не создан для целей Linux.