2014-09-07 3 views
0

Может ли кто-нибудь сказать мне, как скомпилировать компилятор Clang в байт-код LLVM (т. Е. Сам клан)? Причина, по которой я хочу сделать это, заключается в том, что я могу взять полученный байт-код LLVM, а затем использовать Emscripten для создания компилятора C в Javascript.Как самозванец Clang?

+0

Используйте -flto, а затем соберите полученные ИК-модули в большой одиночный модуль. –

ответ

3

Вы можете получить clang для вывода в байт-код LLVM, используя флаг командной строки -emit-llvm, а также флаг -c. (Если вы используете флаг -S вместо -c, вы получаете текстовое представление байт-кода LLVM.) Вам не нужно компилировать clang в байт-код LLVM для этого.

Если вы хотите попробовать запустить clang внутри браузера, вам нужно будет скомпилировать все clang в байт-код LLVM, а затем связать объектные файлы вместе, используя llvm-link. Затем вам нужно выяснить, как предоставить компилируемый компилятор доступ к файлам системных заголовков, которые ему нужны. Я не знаю, есть ли опция сборки для всего этого, но я ничего не видел в параметрах ./configure, поэтому я подозреваю, что нет. Но возможно, что он существует.

+0

Есть аналогичная тема на http://stackoverflow.com/questions/12479458/how-to-build-clang-with-clang, но я новичок, чтобы писать и компилировать в целом, поэтому я понятия не имею, как принять это для компиляции clang LLVM. Как вы думаете, вы могли бы помочь мне немного изменить этот код, чтобы скомпилировать его в LLVM? – user3059347

+0

Как я уже сказал в ответ, это не тривиальный процесс. Я не упомянул, что если вы хотите сделать все это в браузере, вам также нужно будет создать сам emscripten и что результат, скорее всего, будет непрактично большим. Вы уверены, что вам нужно это сделать? – rici