В компиляторе PCC обеспечена возможность сборки FreeBSD
30 января 2011 года
Компилятор PCC (Архивная копия от 23 февраля 2009 на Wayback Machine) (Portable C Compiler), развиваемый с целью создания распространяемой под лицензий BSD альтернативы Си-компилятора из состава GCC, доведен до состояния при котором удалось произвести сборку FreeBSD-CURRENT на платформе amd64, без внесения каких-либо правок. Более того, по заявлению ключевого разработчика, состояние PCC достаточно стабильно и можно планировать скорый выпуск релиза PCC 1.0.
PCC распространяется в рамках лицензии BSD и нацелен на создание полноценного компилятора для языка Си, полностью совместимого со стандартом C99 и частично совместимого с GCC. PCC является в значительной степени переработанным вариантом компилятора Portable C Compiler, разработанного S. C. Johnson в конце 70-х годов прошлого века. Основным разработчиком проекта является Anders Magnusson из команды NetBSD.
Процесс компиляции осуществляется в несколько раз быстрее, чем в GCC, при достаточно сносном коде на выходе. Например, сборка тестового комплекта ByteBench, выполненная при помощи gcc 4.1.3 (режим оптимизации "-O2") оказалась в большинстве тестов лишь на несколько процентов быстрее сборки с использованием PCC (исключение составил тест dhry2reg, при котором PCC отстал почти в два раза и тест hanoi, при котором отставание было на уровне 30%).
Размер архива с исходными текстами последней версии(недоступная ссылка) PCC занимает 1948 Кб, что в шесть раз больше, чем три года назад и в три раза больше, чем в прошлом году. Финансирование доведения PCC до первого стабильного релиза предоставляет проект BSD Fund. Кроме FreeBSD, прогресс сборки систем при помощи PCC также отмечается для ОС NetBSD и OpenBSD.
Энтузиастам, желающим поэкспериментировать со сборкой FreeBSD при помощи PCC, следует установить свежие версии пакетов pcc и pcc-libs, после чего выполнить сборку:
make CC=/usr/local/bin/pcc WITHOUT_GROFF=1 WITHOUT_CLANG=1 \ WITHOUT_TOOLCHAIN=1 WITHOUT_BOOT=1 WITHOUT_NS_CACHING=1
Сборка groff не производится в виду отсутствия поддержки C++ в pcc. При сборке без "WITHOUT_TOOLCHAIN" компиляция может пройти успешно, но есть вероятность проявления одной ошибки, которая еще остается неисправленной. Директива "WITHOUT_BOOT" указана, так как результирующий код загрузчика при сборке при помощи PCC оказывается немного больше допустимого размера (проблема легко исправима). "WITHOUT_NS_CACHING" используется, так как в коде присутствуют расширения GNU CPP, которые PCC не поддерживает (пока).
Дополнение: ресурс phoronix.com провел сравнение производительности компиляторов GCC 4.4.5, GCC 4.5.1, LLVM-GCC 4.2.1 (Архивная копия от 8 февраля 2012 на Wayback Machine), Open64 4.2.3 (Архивная копия от 27 февраля 2015 на Wayback Machine) и PCC 0.9.9 20110126. Тестирование производилось в Ubuntu 10.10. В тесте Dhrystone 2 из состава BYTE Unix Benchmark код собранный компилятором PCC оказался на последнем месте по производительности, отстав от GCC 4.4.5 на 45%, а от LLVM-GCC 4.2.1 в 2.3 раза. В тестах Register arithmetic и Floating-Point arithmetic из состава комплекта BYTE Unix Benchmark сгенерированный в PPC код показал примерно одинаковую с GCC 4.4.5 производительность. В тестах Apache, John The Ripper, C-Ray, Himeno, MAFFT, 7-Zip, FLAC и GraphicsMagick проект PCC не был включен в число тестируемых компиляторов.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.