Что такое пропуски и вызываемые программы GCC? - PullRequest
4 голосов
/ 07 февраля 2012

Это возникло в другой вопрос : Каковы программы и части, называемые gcc (особенно при компиляции C или C++), чтобы кто-то мог разработать какую-то схему перехвата и измененияпоток для различных пользовательских целей кодирования?

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

Двоичные файлы компилятора являются «драйвером компилятора» (т. Е. gcc) и самим компилятором, который также выступает в качестве препроцессора (cc1 или cc1plus).Он также вызывает ассемблер (as) и компоновщик (ld).Кроме того, есть инструмент под названием collect2, который в некоторых случаях помогает в процессе компоновки.

Если вы хотите увидеть, что такое промежуточные состояния и вызовы, то сделайте следующее:вы хотите увидеть этапы оптимизации компилятора, а затем использовать эти параметры:

gcc -fdump-tree-all -fdump-rtl-all ....

Это создает (неопределенно) удобочитаемые дампы внутреннего состояния для целей отладки.Это ничего, что вы могли бы сохранить и перезагрузить в компилятор позже, это точно, но это полезно, если вы планируете изменить исходный код компилятора или написать плагин GCC.

1 голос

Соблюдайте, какие именно программы называются:

gcc -v main.c

Точные шаги определяются файлом спецификации в формате: https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Spec-Files.html

Просмотр по умолчанию (жестко задан в GCC):

gcc -dumpspecs

Запустите свой собственный файл спецификаций после файла по умолчанию:

gcc -specs=file
...