Что делает опция -c в GCC

Кто-нибудь знает, что делает флаг -c в gcc ?

Например, какая разница между

 gcc -c output0.c vs gcc output0.c 

Я знаю, что второй делает файл .a но я не делаю этого.

Также, что делает -o в

 gcc output0.o -o output0 

Это просто имя выходного файла?

Скомпилируйте или соберите исходные файлы, но не связывайтесь. Шаг связывания просто не выполняется. Конечный результат представлен в виде объектного файла для каждого исходного файла.

По умолчанию имя файла объекта для исходного файла создается путем замены суффикса .c, .i, .s и т. Д. С .o. Непризнанные входные файлы, не требующие компиляции или сборки, игнорируются.

-o файл

Поместите вывод в файл. Это применяется независимо от того, какой тип выпуска создается, будь то исполняемый файл, объектный файл, файл ассемблера или предварительно обработанный код C. Если -o не указывается, по умолчанию следует поместить исполняемый файл в a.out, объектный файл для source.suffix в source.o, его файл ассемблера в source.s, предварительно скомпилированный заголовочный файл в source.suffix.gch , и весь предварительно обработанный источник C на стандартном выходе.

Более подробную информацию можно найти на странице руководства GCC

-c даст указание gcc только компилировать исходный файл в файл .o (object), но не ссылается на компоновщик.

В проекте, содержащем много файлов .c, обычно компилируются сначала все файлы .c в файлы .o, а затем связывают все вместе с библиотеками.

-c Скомпилировать или собрать исходные файлы, но не ссылаться. Эта ссылка не выполняется. Конечный результат представлен в виде объектного файла для каждого исходного файла.

  By default, the object file name for a source file is made by replacing the suffix >.c, .i, .s, etc., with .o. Unrecognized input files, not requiring compilation or assembly, are ignored. 

От man gcc :

-c Скомпилировать или собрать исходные файлы, но не ссылаться. Шаг связывания просто не выполняется. Конечный результат представлен в виде объектного файла для каждого исходного файла.

По умолчанию имя файла объекта для исходного файла создается путем замены суффикса .c, .i, .s и т. Д. С .o.

Непризнанные входные файлы, не требующие компиляции или сборки, игнорируются.