Различные этапы обработки Clang

0

Подобно GCC, clang поддерживает остановку на разных этапах обработки C/C++. Например, передача флага -E приводит к тому, что он останавливается после того, как препроцессор и -c останавливаются перед связыванием.

До сих пор я знаю,

  1. -E: предварительная обработка
  2. -fsyntax-only: проверка синтаксиса
  3. -S: сборка
  4. -c: объектный код

Я пропустил какие-либо точки остановки между ними или это так?

  • 0
    Я могу ошибаться, но я сомневаюсь, что в любом современном компиляторе сборка на самом деле является этапом перед объектным кодом, а не альтернативным выводом. Большинство компиляторов также могут ссылаться (отдельная стадия даже с одним объектным файлом, так как libc подключается) в командной строке.
  • 0
    Я как бы представлял себе конвейер: препроцессор -> синтаксис -> сборка -> объект -> конечный исполняемый файл. Я должен был, вероятно, добавить, что нумерация, которую я включил, более логична, чем фактическая; насколько я был близок к финальному исполняемому файлу, как я на него смотрел.
Показать ещё 2 комментария
Теги:
clang
clang++

1 ответ

4
Лучший ответ

Вы также можете использовать -S -emit-llvm для генерации файлов сборки LLVM IR и просто -emit-llvm для файлов объектных файлов LLVM. Это независимые от языка представления кода, которые clang и другие LLVM-интерфейсы генерируют и передают LLVM для компиляции в исполняемый файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню