Это команда clang-3.5, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
clang - компилятор Clang C, C ++ и Objective-C
СИНТАКСИС
лязг [-c|-S|-E] -std =стандарт -g
[-O0|-O1|-O2|-O3|-Быстро|-Операционные системы|-Унция|-O|-O4]
-Wпредупреждения ... -педантический
-Iреж ... -Lреж ...
-Dмакрос [= defn]
-fособенность-опция ...
-mмашина-опция ...
-o выходной файл
-stdlib =библиотека
имена файлов ввода
ОПИСАНИЕ
лязг это компилятор C, C ++ и Objective-C, который включает в себя предварительную обработку, синтаксический анализ,
оптимизация, генерация кода, сборка и компоновка. В зависимости от того, какой высокоуровневый режим
настройка пройдена, Clang остановится перед выполнением полной ссылки. В то время как Clang очень
интегрированный, важно понимать этапы компиляции, понимать, как
вызвать его. Этими этапами являются:
Драйвер
Исследование лязг исполняемый файл на самом деле представляет собой небольшой драйвер, который контролирует общее выполнение
других инструментов, таких как компилятор, ассемблер и компоновщик. Обычно вам не нужно
для взаимодействия с драйвером, но вы прозрачно используете его для запуска других инструментов.
предварительная обработка
На этом этапе выполняется токенизация входного исходного файла, расширение макроса, #include
расширение и обработка других директив препроцессора. Результатом этого этапа является
обычно называется «.i» (для C), «.ii» (для C ++), «.mi» (для Objective-C) или «.mii».
(для Objective-C ++) файл.
анализ и семантический Анализ
Этот этап анализирует входной файл, переводя токены препроцессора в дерево синтаксического анализа.
Находясь в форме дерева синтаксического анализатора, он применяет семантический анализ для вычисления типов для
выражений и определить, правильно ли сформирован код. Этот этап
отвечает за генерацию большинства предупреждений компилятора, а также за ошибки синтаксического анализа. В
Результатом этого этапа является «Абстрактное синтаксическое дерево» (AST).
Code Поколение и Оптимизация
На этом этапе AST преобразуется в низкоуровневый промежуточный код (известный как «LLVM IR») и
в конечном итоге к машинному коду. Этот этап отвечает за оптимизацию генерируемых
код и обработка генерации кода для конкретной цели. Результатом этого этапа является
обычно называется файлом ".s" или файлом "сборки".
Clang также поддерживает использование встроенного ассемблера, в котором генератор кода
создает объектные файлы напрямую. Это позволяет избежать накладных расходов на создание файла ".s".
и вызова целевого ассемблера.
Ассемблер
На этом этапе запускается целевой ассемблер для преобразования вывода компилятора в
целевой объектный файл. Результат этого этапа обычно называется файлом ".o" или
"объектный" файл.
связи
На этом этапе выполняется целевой компоновщик для объединения нескольких объектных файлов в исполняемый файл или
динамическая библиотека. Результат этого этапа обычно называется «a.out», «.dylib» или
".so" файл.
Компилятор Clang поддерживает большое количество опций для управления каждым из этих этапов. В
Помимо компиляции кода, Clang также поддерживает другие инструменты:
лязг статический Анализатор
Clang Static Analyzer - это инструмент, который сканирует исходный код, чтобы попытаться найти ошибки через
анализ кода. Этот инструмент использует многие части Clang и встроен в тот же драйвер.
Пожалуйста, посмотриhttp://clang-analyzer.llvm.org> подробнее о том, как использовать статический
анализатор.
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
Этап Выбор Возможности
-E Запустите этап препроцессора.
-fsyntax-только
Запустите этапы препроцессора, парсера и проверки типов.
-S Запустите предыдущие этапы, а также этапы генерации и оптимизации LLVM и
генерация специального кода, создающая файл сборки.
-c Запустите все вышеперечисленное, а также ассемблер, создав целевой объектный файл ".o".
нет этап выбор вариант
Если опция выбора этапа не указана, выполняются все этапы, указанные выше, и компоновщик
запустить, чтобы объединить результаты в исполняемую или общую библиотеку.
Язык Выбор и режим Возможности
-x язык
Обрабатывать последующие входные файлы как имеющие тип язык.
-стандарт=язык
Укажите стандарт языка для компиляции.
-stdlib=библиотека
Укажите стандартную библиотеку C ++ для использования; поддерживаемые параметры - libstdc ++ и libc ++.
-анси
Такой же как -std = C89.
-ObjC ++
Считайте исходные входные файлы входными данными Objective-C ++.
-Объект
Считайте исходные входные файлы входными данными Objective-C.
-триграфы
Включить триграфы.
-Отдельные
Укажите, что файл должен быть скомпилирован для автономного, а не размещенного,
окружающей среды.
-fno-встроенный
Отключите специальную обработку и оптимизацию встроенных функций, таких как strlen и
маллок
-fmath-ошибка
Укажите, что математические функции следует рассматривать как обновляющие номер ошибки.
-fpascal-строки
Включите поддержку строк в стиле Паскаля с помощью "\ pfoo".
-fms-extension
Включите поддержку расширений Microsoft.
-fmsc-version =
Установите _MSC_VER. По умолчанию 1300 в Windows. Иначе не установлено.
-fborland-extension
Включите поддержку расширений Borland.
-fwritable-строки
Сделайте все строковые литералы доступными для записи по умолчанию. Это отключает уникальность строк и
другие оптимизации.
-lax-vector-conversions
Разрешить свободные правила проверки типов для неявных векторных преобразований.
-fблоки
Включите языковую функцию «Блоки».
-fobjc-gc-только
Укажите, что код Objective-C должен быть скомпилирован в режиме GC-only, который работает только
когда включена сборка мусора Objective-C.
-fobjc-gc
Укажите, что код Objective-C должен быть скомпилирован в режиме гибридного сборщика мусора, который работает с
как в режиме GC, так и в режиме без GC.
-fobjc-аби-версия=версия
Выберите версию Objective-C ABI для использования. Доступны версии 1 (устаревшая "хрупкая"
ABI), 2 (не хрупкий ABI 1) и 3 (не хрупкий ABI 2).
-fobjc-nonfragile-abi-версия=версия
Выберите версию Objective-C non-fragile ABI для использования по умолчанию. Это будет только
используется в качестве Objective-C ABI, когда включен нефрагильный ABI (либо через
-fobjc-nonfragile-abi, или потому что это платформа по умолчанию).
-fobjc-нехрупкий-аби
Разрешить использование нехрупкого ABI Objective-C. На платформах, для которых это
ABI по умолчанию, его можно отключить с помощью -fno-objc-nonfragile-аби.
цель Выбор Возможности
Clang полностью поддерживает кросс-компиляцию как неотъемлемую часть своего дизайна. В зависимости от
как настроена ваша версия Clang, она может поддерживать несколько перекрестных
компиляторы или могут поддерживать только нативную цель.
-арх архитектура
Укажите архитектуру для построения.
-mmacosx-версия-мин=версия
При сборке для Mac OS X укажите минимальную версию, поддерживаемую вашим приложением.
-miphoneos-версия-мин
При сборке для iPhone OS укажите минимальную версию, поддерживаемую вашим
Приложение.
-маршировать=процессор
Укажите, что Clang должен генерировать код для определенного члена семейства процессоров и
потом. Например, если вы укажете -march = i486, компилятору разрешено генерировать
инструкции, которые действительны для процессоров i486 и более поздних версий, но могут отсутствовать на
более ранние.
Code Поколение Возможности
-O0 -O1 -O2 -O3 -Быстро -Операционные системы -Унция -O -O4
Укажите, какой уровень оптимизации использовать:
-O0 Означает "без оптимизации": этот уровень компилируется быстрее всех и генерирует больше всего
отлаживаемый код.
-O1 Где-то между -O0 и -O2.
-O2 Умеренный уровень оптимизации, позволяющий выполнять большинство оптимизаций.
-O3 Подобно -O2, за исключением того, что он позволяет выполнять оптимизацию, которая требует больше времени или
может генерировать более крупный код (в попытке ускорить работу программы).
-Быстро
Включает все оптимизации из -O3 наряду с другими агрессивными оптимизациями
что может нарушать строгое соблюдение языковых стандартов.
-Операционные системы Подобно -O2 с дополнительной оптимизацией для уменьшения размера кода.
-Унция Подобно -Операционные системы (и поэтому -O2), но еще больше уменьшает размер кода.
-O Эквивалентно -O2.
-O4 и выше
В настоящее время эквивалентно -O3
-g Сгенерируйте отладочную информацию. Обратите внимание, что отладочная информация Clang лучше всего работает на -O0.
-fstandalone-отладка -fno-автономная-отладка
Clang поддерживает ряд оптимизаций для уменьшения размера отладочной информации в
двоичный. Они работают на основе предположения, что информация о типе отладки может быть
распределены по нескольким единицам компиляции. Например, Clang не будет выдавать тип
определения типов, которые не нужны модулю и могут быть заменены
форвардная декларация. Кроме того, Clang будет выдавать информацию о типе только для динамического класса C ++.
в модуле, содержащем vtable для класса.
Исследование -fstandalone-отладка опция отключает эти оптимизации. Это полезно, когда
работа со сторонними библиотеками, в которых нет отладочной информации. Это
дефолт по Дарвину. Обратите внимание, что Clang никогда не будет выдавать информацию о типах для типов, которые
программа вообще не ссылается на них.
-fисключения
Разрешить генерацию разматываемой информации, это позволяет перебрасывать исключения.
Скомпилированные кадры стека Clang. Это по умолчанию включено в x86-64.
-ftrapv
Сгенерируйте код для обнаружения ошибок переполнения целых чисел. Знаковое целочисленное переполнение не определено
в C с этим флагом создается дополнительный код для обнаружения этого и отмены, когда он
случается.
-видимость
Этот флаг устанавливает уровень видимости по умолчанию.
-fобщий
Этот флаг указывает, что переменные без инициализаторов получают общую связь. Может быть
отключен с -fno-общий.
-ftls-модель
Установите модель локального хранилища потока (TLS) по умолчанию, которая будет использоваться для локальных переменных потока.
Допустимые значения: global-dynamic, local-dynamic, initial-exec и local-exec.
По умолчанию - «глобально-динамический». Модель по умолчанию может быть переопределена с помощью
Атрибут tls_model. Компилятор попытается выбрать более эффективную модель, если
возможное.
-флто -эмит-llvm
Создавайте выходные файлы в форматах LLVM, подходящих для оптимизации времени компоновки. При использовании
-S это генерирует файлы ассемблера промежуточного языка LLVM, в противном случае это
генерирует объектные файлы в формате битового кода LLVM (которые могут быть переданы компоновщику
в зависимости от вариантов выбора этапа).
Драйвер Возможности
- ###
Распечатайте (но не запускайте) команды для выполнения этой компиляции.
--Помогите
Показать доступные параметры.
-Qunused-аргументы
Не выдавать предупреждение о неиспользуемых аргументах драйвера.
-Ва,арг
Передайте аргументы, разделенные запятыми, в арг ассемблеру.
-Вл,арг
Передайте аргументы, разделенные запятыми, в арг компоновщику.
-Вп,арг
Передайте аргументы, разделенные запятыми, в арг препроцессору.
-Ксанализатор аргумент
Проходить аргумент к статическому анализатору.
-Xассемблер аргумент
Проходить аргумент ассемблеру.
-Xlinker аргумент
Проходить аргумент компоновщику.
-Xпрепроцессор аргумент
Проходить аргумент препроцессору.
-o файл
Записать вывод в файл.
-print-имя-файла=файл
Вывести полный путь к библиотеке файл.
-print-libgcc-имя-файла
Выведите путь к библиотеке для "libgcc.a".
-print-имя-программы=имя
Вывести полный путь к программе имя.
-print-поиск-директоров
Выведите пути, используемые для поиска библиотек и программ.
-сохранение темпов
Сохраните промежуточные результаты компиляции.
-интегрированный-как -нет-интегрированный-как
Используется для включения и отключения, соответственно, использования встроенного ассемблера. Ли
встроенный ассемблер включен по умолчанию и зависит от цели.
-время
Время индивидуальных команд.
-ftime-отчет
Распечатать временную сводку каждого этапа компиляции.
-v Показать команды для запуска и использовать подробный вывод.
Диагностика Возможности
-fshow-столбец -fshow-исходное-местоположение -fcaret-диагностика -fdiagnostics-fixit-информация
-fdiagnostics-parseable-fixits -fdiagnostics-print-source-range-информация
-fprint-источник-диапазон-информация -fdiagnostics-показать-опцию -f длина-сообщения
Эти параметры управляют тем, как Clang распечатывает информацию о диагностике (ошибках и
предупреждения). Пожалуйста, обратитесь к Руководству пользователя Clang для получения дополнительной информации.
препроцессор Возможности
-Dmacroname = значение
Добавляет неявный #define в буфер предопределений, который читается перед источником
файл предварительно обработан.
-Uмакронейм
Добавляет неявный #undef в буфер предопределений, который читается перед источником
файл предварительно обработан.
-включают имя файла
Добавляет неявный #include в предопределенный буфер, который читается перед источником
файл предварительно обработан.
-Iкаталог
Добавьте указанный каталог в путь поиска включаемых файлов.
-Fкаталог
Добавьте указанный каталог в путь поиска включаемых файлов фреймворка.
-ностдинк
Не ищите в стандартных системных каталогах или встроенных каталогах компилятора
включать файлы.
-nostdlibinc
Не ищите включаемые файлы в стандартных системных каталогах, а выполняйте поиск
встроенный компилятор включает каталоги.
-nobuildinc
Не ищите включаемые файлы во встроенном каталоге clang.
ОКРУЖАЮЩАЯ СРЕДА
TMPDIR, TEMP, TMP
Эти переменные среды проверяются, чтобы указать место для записи временного
файлы, используемые в процессе компиляции.
CPATH
Если эта переменная среды присутствует, она рассматривается как список путей к
быть добавленным в список путей включения системы по умолчанию. Разделитель - это платформа
зависимый разделитель, используемый в PATH переменная среды.
Пустые компоненты в переменной среды игнорируются.
C_INCLUDE_PATH, OBJC_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJCPLUS_INCLUDE_PATH
Эти переменные среды указывают дополнительные пути, как для CPATH, которые только
при обработке используется соответствующий язык.
MACOSX_DEPLOYMENT_TARGET
Если -mmacosx-version-min не указан, цель развертывания по умолчанию считывается из
эта переменная среды. Эта опция влияет только на дарвиновские цели.
Используйте clang-3.5 онлайн с помощью сервисов onworks.net