1.2. Компиляторы GCC
1.2. Компиляторы GCC
Компилятор превращает исходный текст программы, понятный человеку, в объектный код. исполняемый компьютером. Компиляторы, доступные в Linux-системах, являются честью коллекции GNU-компиляторов, известной как GCC (GNU Compiler Collection).[4] В нее входят компиляторы языков С, C++, Java, Objective-C, Fortran и Chill. В этой книге нас будут интересовать лишь первые два.
Предположим, имеется проект, в который входят два исходных файла: один написан на С (main.c; листинг 1.1), а другой — на C++ (reciprocal.cpp; листинг 1.2). После компиляции оба файла компонуются вместе, образуя программу reciprocal,[5] которая вычисляет обратное заданного целого числа.
Листинг 1.1. (main.c) Исходный файл на языке С
#include <stdio.h>
#include "reciprocal.hpp"
int main(int argc, char **argv) {
int i;
i = atoi(argv[1]);
printf("The reciprocal of %d is %g ", i, reciprocal(i));
return 0;
}
Листинг 1.2. (reciprocal.cpp) Исходный файл на языке C++
#include <cassert>
#include "reciprocal.hpp"
double reciprocal (int i) {
// Аргумент не должен быть равен нулю
assert(i != 0);
return 1.0/i;
}
Есть также файл заголовков, который называется reciprocal.hpp (листинг 1.3).
Листинг 1.3. (reciprocal.hpp) Файл заголовков
#ifdef __cplusplus
extern "С" {
#endif
extern double reciprocal(int i);
#ifdef __cplusplus
}
#endif
Первый шаг заключается в превращении исходных файлов в объектный код.