Подтвердить что ты не робот

Что делает опция clang -cc1?

Я новичок в clang. Я прочитал статью о преобразовании исходного кода в исходный код cuda в opencl с использованием cuda opencl компилятора clang.

Может кто-нибудь сказать мне, почему иногда используется опция -cc1?

4b9b3361

Ответ 1

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

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

Надеюсь, что это станет немного яснее.

Ответ 2

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

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