ArvindSai Ответов: 1

В чем разница между объектным файлом и файлом a.out в linux или unix?


Я только что начал изучать программирование на Linux с помощью C, я обнаружил, что при компиляции файла исходного кода, то есть xyz.c с помощью команды gcc xyz.c, мы получаем исполняемый файл a.out, который имеет эквивалентный шестнадцатеричный код и который понятен процессору.

вот мои сомнения
1. Что означают-Е, - С и-с
2. при попытке компиляции непосредственно с помощью команды gcc xyz.c создается исполняемый файл с именем a.out, который имеет эквивалентный шестнадцатеричный код, так в чем же разница между файлом расширения a .out и.o?
3. каково точное значение-o в Linux commnand

Что я уже пробовал:

но когда я попробовал эту процедуру, чтобы найти и наблюдать, что происходит в процедуре компиляции
Шаг 1: gcc-E xyz. c-o xyz. i
он создает файл расширения .i, который имеет расширенный исходный код.
Шаг 2: gcc-S xyz. i-o xyz. s
он создает файл расширения .s, который имеет эквивалентный ассемблерный код.
Шаг 3: gcc -c xyz. c-o xyz. o
он создает объектный файл, который имеет эквивалентный шестнадцатеричный код, понятный процессору

Tomas Takac

Вы читали документацию?
https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/Overall-Options.html#Overall-Options

CPallini

Точно, мой виртуальный 5.

1 Ответов

Рейтинг:
4

Jochen Arndt

Процесс создания исполняемой программы состоит из двух этапов:


  1. Компиляция исходных файлов, которая создает объектные файлы
  2. Связывание объектных файлов и необязательных библиотек, создающих исполняемый файл

Для этого требуются два инструмента: компилятор и компоновщик.
GCC - это и то, и другое, и переданные параметры командной строки указывают, что должно быть сделано.

То -c опция указывает GCC скомпилировать файл, указанный после опции. По умолчанию объектный файл с тем же именем, но .o будут сгенерированы расширения.

То -E и -S параметры начнут компиляцию, но остановятся на определенных этапах обработки и сгенерируют выходной файл соответствующего типа.

То -o параметр указывает имя выходного файла и переопределяет значение по умолчанию (< source-name>. o при компиляции, а.из при связывании).

Вызов GCC только с именами исходных файлов является особым случаем:
Он будет компилировать исходные файлы (генерировать объектные файлы), связывать объектные файлы для создания исполняемого файла (а.из), и удаляет объектные файлы.

Обзор всех вариантов см. В разделе Использование коллекции компиляторов GNU (GCC): сводка параметров[^].


CPallini

5.