Может ли кто-нибудь сказать мне, как скомпилировать компилятор Clang в байт-код LLVM (т. Е. Сам клан)? Причина, по которой я хочу сделать это, заключается в том, что я могу взять полученный байт-код LLVM, а затем использовать Emscripten для создания компилятора C в Javascript.Как самозванец Clang?
ответ
Вы можете получить clang для вывода в байт-код LLVM, используя флаг командной строки -emit-llvm
, а также флаг -c
. (Если вы используете флаг -S
вместо -c
, вы получаете текстовое представление байт-кода LLVM.) Вам не нужно компилировать clang в байт-код LLVM для этого.
Если вы хотите попробовать запустить clang внутри браузера, вам нужно будет скомпилировать все clang в байт-код LLVM, а затем связать объектные файлы вместе, используя llvm-link
. Затем вам нужно выяснить, как предоставить компилируемый компилятор доступ к файлам системных заголовков, которые ему нужны. Я не знаю, есть ли опция сборки для всего этого, но я ничего не видел в параметрах ./configure
, поэтому я подозреваю, что нет. Но возможно, что он существует.
Есть аналогичная тема на http://stackoverflow.com/questions/12479458/how-to-build-clang-with-clang, но я новичок, чтобы писать и компилировать в целом, поэтому я понятия не имею, как принять это для компиляции clang LLVM. Как вы думаете, вы могли бы помочь мне немного изменить этот код, чтобы скомпилировать его в LLVM? – user3059347
Как я уже сказал в ответ, это не тривиальный процесс. Я не упомянул, что если вы хотите сделать все это в браузере, вам также нужно будет создать сам emscripten и что результат, скорее всего, будет непрактично большим. Вы уверены, что вам нужно это сделать? – rici
Используйте -flto, а затем соберите полученные ИК-модули в большой одиночный модуль. –