Есть ли дистрибутив Linux, скомпилированный с помощью clang / llvm ? Похоже, что в конце 2010 года ядро работало. Если нет, то скорее всего это будет техническая проблема или проблема с лицензированием?
Есть ли дистрибутив Linux, скомпилированный с помощью clang / llvm ? Похоже, что в конце 2010 года ядро работало. Если нет, то скорее всего это будет техническая проблема или проблема с лицензированием?
Ответы:
Как поздний ответ на этот вопрос, то, что сказал @jmtd, именно то, что периодически происходит в архиве Debian.
Пакеты перекомпилируются с использованием новых инструментальных цепочек (компиляторы, компоновщики и т. Д.), И, если перекомпиляция завершается неудачно, ошибки в пакетах, которые не удалось скомпилировать, регистрируются с указанием FTBFS («не удалось собрать из источника»).
Такие ошибки, как правило, указывают на то, что происходит что-то плохое, и они обычно ранжируются с высокой степенью серьезности и имеют статус «критических для выпуска» ошибок, что означает, что новый выпуск не может быть сделан с этими нерешенными ошибками.
В частности, Лукас Нуссбаум перекомпилировал весь архив проекта Debian в сетку как средство оценки качества.
Однако недавно Сильвестр Ледру и некоторые другие разработчики Debian наставляли студентов в Google Summer of Code 2012, чтобы разрешить замену как GCC Clang, так и libstdc++
(библиотеки поддержки GCC для C ++) libc++
(аналог Clang / LLVM).
Есть сайт, на котором были опубликованы результаты компиляции всей коллекции пакетов Debian, а LWN задокументировали дальнейшие отчеты , и программа для отделения процесса сборки Debian от GCC была успешно завершена .
Таким образом, мы можем вскоре увидеть разновидность Debian, скомпилированную с помощью clang / llvm, в зависимости от степени поддержки, которую могут получить эти успешные результаты.
Начиная с этого обновления (2016-08-16), есть новая версия традиционного дистрибутива Linux, скомпилированного с помощью clang и llvm, OpenMandriva Lx 3.0 , которая теперь находится в финальной версии. Согласно его примечаниям, он скомпилирован, насколько это возможно, не только с clang и llvm, но и с «обычными» высокими уровнями оптимизации, а также с Link Time Optimization (LTO) .
Хотя основным предметом вопроса и этого ответа является llvm / clang, чтобы быть справедливым, следует отметить, что GCC также имеет LTO (больше информации о LTO ).
Теоретически, LTO, как это видно в более новых clang / llvm и GCC, имеет потенциал ускорения не только получаемых двоичных файлов, но и меньших требований к памяти для текстового раздела программ (и ядро Linux является одним из потенциальных преимуществ LTO ).
Я не читал, насколько OpenMandriva Lx 3.0 использует LTO во всех программах, но я рад, что он использует clang / llvm + LTO, и я хотел бы видеть людей, которые проводят несколько независимых тестов сравнения и сравнения "обычных" GCC на основе, не LTO-оптимизированные дистрибутивы для OpenMandriva Lx 3.0.
Еще нет. Согласно этому открытому в настоящее время сообщению об ошибке, кажется, что даже само ядро не компилируется.
Хотя двоичные файлы конечного пользователя не создаются с помощью clang / llvm, большая часть архива Debian была собрана (и перестроена) с помощью clang / llvm (и binutils-gold и других кусочков и кусочков) людьми, которые хотят выявлять ошибки переносимости в программный пакет (и сами компиляторы).
Недавно в OpenSuse - выпуске Tumbleweed планируется установить LTO на gcc9 для его сборок. http://hubicka.blogspot.com/2019/05/gcc-9-link-time-and-inter-procedural.html