В Clang обеспечена возможность сборки Linux-ядра 2.6.36

26 октября 2010 года

Разрабатываемый в рамках проекта LLVM компилятор Clang преодолел (Архивная копия от 12 августа 2014 на Wayback Machine) значительный барьер - разработчикам удалось добиться сборки Linux-ядра 2.6.36. С учетом того, что ядро корректно собирается только ограниченным числом версий GCC, это значительный шаг в развитии Clang. В настоящий момент собранное при помощи Clang ядро способно загружать систему на пятый уровень выполнения (runlevel 5, запуск графической и сетевой подсистемы), работать как в окружении QEMU, так и на реальном оборудовании (X-сервер удалось запустить на Macbook 5.1 (CPU Intel C2D), ведется подготовка тестовой системы на базе Intel Atom). В системе на базе собранного в Clang Linux-ядра успешно проведен эксперимент по пересборке и последующему запуску еще одной копии ядра (self-host).

К сожалению не все проблемы еще решены и для того чтобы добиться загрузки системы приходится использовать некоторые компоненты, собранные при помощи GCC. В частности, из-за возникновения внутренних ошибок компилятора и проблем c обработкой массивов переменной длины, пока не удается собрать код SELinux, Posix ACL, IPSec, eCrypt и других подсистем, использующих Crypto API. Разработчики Clang надеются, что код Crypto API не фундаментально завязан на специфичных GNU-расширениях GCC и решить возникшие проблемы удастся незначительными правками. Кроме того, незначительные проблемы наблюдаются при сборке кода, связанного с Xen, IPv6 и Netfilters/Router, не работает код загрузки модулей ядра.

Из успешно собранных подсистем можно отметить:

  • Базовый код ядра, файловые системы, интерфейс к шинам передачи данных, PCI, ACPI - стресс-тестирование пока не проводилось, но на первый взгляд все работает;
  • SMP, SMT, SysV, pthreads, POSIX IPC - проведено интенсивное тестирование с использованием пакетов tiobench и rt-tests, а также библиотек Boost.Process и the Boost.Thread;
  • NUMA, swap, mm, slab allocator - с целью тестирования подсистем управления памятью, ядро и связка LLVM + Clang были перекомпилированы несколько раз, используя для сборки текущей системы ядро и Clang, собранные на предыдущем этапе;
  • Сетевой стек - IPv4-стек работает без нареканий, за исключением IPSec и Netfilter;
  • Драйверы и прошивки - в общем виде драйверы собираются, если они не используют Crypto API. Из проверенных устройств отмечаются: клавиатура, DVD/CDROM, тачпад, USB-драверы, web-камера iSight, графика и звук (в системе нормально работает Flash-плагин и просмотр видео).

Clang представляет собой LLVM фронтенд для языков C, С++ и Objective-C, который можно использовать вместо GCC. Исходные тексты Clang распространяются в рамках лицензии BSD, что делает этот компилятор интересным решением для замены GCC в BSD-подобных ОС. В настоящее время активно развивается проект адаптации данного компилятора для сборки базовой системы и портов FreeBSD. В будущем Clang планируется использовать вместо GCC в качестве системного компилятора FreeBSD.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «В Clang обеспечена возможность сборки Linux-ядра 2.6.36», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.