#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