Команда gcc

Команда gcc предназначена для компиляции с помощью компилятора GCC кода на языке C. Данная команда похожа на команду g++, используемую для компиляции кода на языке C++.

Базовый синтаксис команды выглядит следующим образом:

$ gcc [параметры] имена файлов

В качестве имен файлов могут использоваться как имена файлов исходного кода на языке C с расширением .c, так и имена файлов объектного кода с расширением .o. Компилятор поддерживает поистине огромное количество параметров, но наиболее важными из них являются такие параметры, как параметр -o, позволяющий задать имя результирующего исполняемого файла, параметр -c, позволяющий лишь скомпилировать файл без связывания (то есть, создать файл объектного кода, а не исполняемый файл), параметр -O, позволяющий задать уровень оптимизации и параметр -l, позволяющий указать библиотеку, которая должна быть связана с результирующим исполняемым файлом.

Примеры использования

Компиляция программы из одного файла исходного кода

Для компиляции простейшей программы из одного файла исходного кода достаточно передать компилятору имя файла исходного кода, а также имя результирующего исполняемого файла.

Это содержимое файла исходного кода test.c:

  1. #include <stdio.h>
  2.  
  3. void print_hello(void)
  4. {
  5.         printf("Hello worldn");
  6. }
  7.  
  8. int main(int argc, char **argv)
  9. {
  10.         print_hello();
  11.        
  12.         return 0;
  13. }

Для его компиляции может использоваться следующая простая команда:

$ gcc test.c -o test

В результате будет создан исполняемый файл test:

$ ./test
Hello world

Компиляция программы из нескольких файлов исходного кода

Компиляция программы из нескольких файлов исходного кода может осуществляться также, как и программы из одного файла исходного кода путем перечисления всех файлов исходного кода вместо одного, но лучшим решением является компиляция файлов исходного кода по очереди с последующим связыванием.

Это содержимое файла исходного кода test.c:

  1. #include <stdio.h>
  2.  
  3. void print_hello(void)
  4. {
  5.         printf("Hello worldn");
  6. }

Это содержимое заголовочного файла test.h с прототипом функции:

  1. #ifndef TEST_H
  2. #define TEST_H
  3.  
  4. void print_hello(void);
  5.  
  6. #endif /* TEST_H */

А это — содержимое файла исходного кода main.c:

  1. #include <stdio.h>
  2. #include "test.h"
  3.  
  4. int main(int argc, char **argv)
  5. {
  6.         print_hello();
  7.        
  8.         return 0;
  9. }

Для компиляции программы может использоваться следующая последовательность команд:

$ gcc -c test.c -o test.o
$ gcc -c main.c -o main.o
$ gcc test.o main.o -o test

В результате также будет создан исполняемый файл test:

$ ./test
Hello world