Компилятор Clang теперь пригоден для сборки Linux-ядра
В блоге разработчиков Clang появилась информация о том, что с помощью Clang удалось собрать работоспособное Linux-ядро версии 2.6.36 с поддержкой многопроцессорных систем (SMP). Несмотря на то, что некоторые компоненты ядра пока не поддаются компиляции, это событие приближает тот момент, когда Clang превратится в полноценный аналог GCC.
Немного технической информации:
- В качестве основного стенда использовался Macbook 5.1 на базе Intel Core 2 Duo (не стоит забывать, что разработку Clang поддерживает в первую очередь компания Apple). На этой конфигурации удалось запустить ядро с работоспособным X-сервером, а также ядро в среде Qemu
- В качестве второго стенда использовалась microATX-платформа на базе Intel Atom. В этом случае ядро также функционировало, однако разработчики не пытались запускать X-сервер
- В системе на базе собранного ядра компилятор успешно собирает сам себя, а также новое ядро. Разработчики доклаывают об успешной работе кода, полученного в ходе четвертого цикла самосборки.
Работоспособны следующие компонетны ядра:
- Базовый код ядра, файловые системы, поддержка шин, в том числе и PCI, ACPI
- SMP, SMT, SysV, pThreads и POSIX IPC
- NUMA, управление памятью и SWAP
- Сетевой стек IPv4, за исключением IPSec
- Некоторые драйверы и прошивки
Пока не удалось добиться работы следующих подсистем:
- CryptoAPI, а следовательно, и SELinux, Posix ACLs, IPSec, eCrypt
- Стека IPv6 и код Netfilter/Router из-за зависимости от CryptoAPI
- Виртуализации (поддержки гипервизора Xen)
- Поддержки загружаемых модулей
Разработчики намерены и дальше улучшать совместимость между Clang и GCC и добиваться сборки с помощью Clang полностью работоспособного ядра.