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

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

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

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

но без объяснения причин.

Я пытаюсь понять:

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

person Stefano Azzalini    schedule 31.10.2017    source источник


Ответы (1)


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

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

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

person Antti Haapala    schedule 31.10.2017
comment
LGPL также допускает статическую компоновку при условии предоставления объектных файлов, поэтому конечный пользователь может повторно связать другую версию библиотеки LGPL. - person ninjalj; 31.10.2017