Я уверен, что вы имеете в виду пакет B :: C с perlcc
, который шел с perl до 5.8.9.С тех пор я взял на себя разработку компилятора perl, который не улучшался с 1997 года, и исправил большинство оставшихся ошибок.
Почему в perl есть отдельный компилятор и внешний интерфейс?
Прежде всего (для остальных): perl является единственным официальным интерфейсом для perl, интерпретатором.
perlcc
является интерфейсом для компиляторов B::C
, B::Bytecode
(-B)и B::CC
(-O), часть компоновщика C также находится в cc_harness
.
Никто на самом деле не хочет связываться с различными опциями для бэкэндов.Использовать perlcc
намного проще.Например, gcc
как драйвер для всех бэкэндов и промежуточных шагов.Для всех промежуточных шагов у gcc есть также разные исполняемые файлы: cc1, cc1plus, collect, as, ld
Вы хотите самостоятельно вызывать cc1
?Я никогда не видел этого.
Достаточно ли это отвечает на ваш вопрос?
Кстати, в основном все ранее полученные ответы были полностью неправильными, и никто не отвечал на вопрос Лазера напрямую.
@ briandfoy: perlcc не мертвый инструмент, он постоянно развивается, а используется в производственном коде.Время запуска значительно быстрее.Вы можете отправить отдельные исполняемые файлы.90% нормального Perl работает.Вы также можете использовать .pmc (как это делает python), но это делают только огромные сайты.Я рекомендую использовать версию из CPAN.
perlcc в основном создает дамп во время CHECK и затем выполняет дамп.Таким образом, существуют семантические различия для упаковщиков perl (PAR, perl2exe, perlapp), которые создают дампы и выполняют их до начала.Смотрите perlcompile.pod из B :: C на CPAN.
@ mkb: поддержка perlcc не ослабла.p5p был просто неспособен исправить оставшиеся ошибки.Так я и сделал.См. http://search.cpan.org/dist/B-C/.
@ Chas: Конечно, perl5 компилируется до некоторого вида "байт-кода", optree.Компилятор B :: Bytecode может использоваться для выгрузки этого, а ByteLoader используется для его запуска.Там также MAD, который создает дамп в XML.И есть -u, который выводит в двоичное представление.Который может быть использован для undump
до exe.Необходим простой шаг, похожий на линкер, на который у меня еще не было времени.
@ Новиков: Perl компилирует в байт-код и затем запускает егоКак и большинство языков сценариев.В Perl есть perlcc, поэтому вы компилируете его в собственные исполняемые файлы.
@ zigdon: Вы смешали это с упаковщиками, такими как perl2exe и PAR.
Может быть, у нас такой беспорядок из-за все еще неправильной записиКомпилятор Perl в FAQ.