Какой аргумент компилятора должен быть предоставлен gcc, чтобы он думал, что это g ?

#c #gcc #g

#c #gcc #g

Вопрос:

Возможно ли записать аргумент в gcc таким образом, чтобы он думал, что это G ?

Комментарии:

1. Разве gcc уже не определяет расширение файла и не запускает соответствующий инструмент?

Ответ №1:

Почему вы хотите это сделать? Насколько я знаю, единственное отличие заключается в том, что g дополнительно передается -lstdc компоновщику для связывания стандартной библиотеки C .

Итак, если вы передадите эту опцию в GCC, он должен переслать ее компоновщику, и все должно быть в порядке. Но я действительно не вижу смысла в этом. Просто используйте g .

Тем не менее, я использовал gcc себя в прошлом для компиляции кода C . Когда у меня была куча файлов, смешанный C и C-код, я просто скомпилировал все, используя gcc , потому что g по умолчанию обрабатывается .c как C -код, который прерывает сборку, когда C-код использует такие вещи, как new в качестве идентификаторов. Добавление -lstdc всегда работало хорошо.

Смотрите справочную страницу GCC

Компиляция программ на C

Исходные файлы C обычно используют один из суффиксов .C, .cc, .cpp, .CPP, .c , .cp или .cxx; заголовочные файлы C часто используют .hh, .hpp, .H или (для общего кода шаблона) .tcc; а предварительно обработанные файлы C используют суффикс .ii. GCC распознает файлы с этими именами и компилирует их как программы на C , даже если вы вызываете компилятор тот же, что и для компиляции программ на C (обычно с именем gcc).

Однако использование gcc не добавляет библиотеку C . g — это программа, которая вызывает GCC и обрабатывает файлы .c, .h и .i как исходные файлы C вместо исходных файлов C, если не используется -x, и автоматически указывает ссылку на библиотеку C . Эта программа также полезна при предварительной компиляции файла заголовка C с расширением .h для использования в компиляциях C . Во многих системах g также установлен с именем c .

При компиляции программ на C вы можете указать многие из тех же параметров командной строки, которые вы используете для компиляции программ на любом языке; или параметры командной строки, значимые для C и родственных языков; или параметры, которые имеют смысл только для программ на C .

Комментарии:

1. g также указывает -lm , что может вызвать проблемы, если ваша система сборки предназначена для обнаружения ненужных зависимостей общей библиотеки и подачи жалоб на них.

Ответ №2:

В этой документации указано, что существует флаг -x для указания языка:

 gcc -x c   ...
  

Ответ №3:

‘gcc’ — это ‘Коллекция компиляторов Gnu’. Если вы передаете ему файл C , он вызывает компилятор C , ‘g ‘.

Несмотря на это, ‘gcc’ и ‘g ‘ не взаимозаменяемы для файлов c . gcc запускает g с несколькими дополнительными аргументами, которые я не могу вспомнить сразу.

При компиляции файлов c я бы всегда использовал g