2012-01-24 1 views
25

Я новичок в clang. Я прочитал статью об источнике преобразования источника с cuda на opencl с использованием clang компилятора переднего конца.Что делает опция clang -cc1?

Может ли кто-нибудь сказать мне, почему опция -cc1 иногда используется? Любая помощь будет действительно оценена, поскольку это может быть очень простой вопрос.

Спасибо

ответ

24

лязга компилятор переднего плана имеет несколько дополнительных особенностей лязга, которые не подвергаются через интерфейс драйвера совместимости GCC. Аргумент -cc1 указывает, что должен использоваться внешний интерфейс компилятора, а не драйвер. Функциональность clang -cc1 реализует функциональность основного компилятора.

Итак, просто говоря. Если вы не дадите -cc1, то вы можете ожидать, что «посмотрите & почувствуйте» стандартного GCC. Это подавляющее большинство флагов компилятора работает так же, как вы ожидаете, что они будут работать с GCC. Если вы передадите опцию «-cc1», вы получите установленный флаг компилятора Clang. Таким образом, могут существовать различия с GCC.

Надеюсь, что это немного упростит.

8

Обычный компилятор состоит из так называемого драйвера компилятора, который знает, как выполнять сам компилятор, ассемблер, компоновщик и т. Д. И сам компилятор, который просто берет исходный код (иногда уже предварительно обработанный) и испускает код ассемблера/объекта.

Clang реализует все эти компоненты в единственном двоичном формате, разница - это только cmdline. Здесь clang -cc1 вызывает сам компилятор с его внутренним/недокументированным набором опций и т. Д.

+0

Знаете ли вы о поддержке cuda в clang 3.0 ?? Он еще не может распознать вызовы ядра !! – SRINI794

+0

@srinivasprabhu, попробуйте спросить в списке рассылки cfe-dev –