Преобразовать файл .o в .exe

Можно ли преобразовать файл объекта .o, который был создан из исходного кода .c в .exe? И если возможно, существует ли прямая команда с использованием gcc?

Ответ 1

gcc foo.o -o foo.exe

Ответ 2

Возможно преобразование a .o в .exe в зависимости от содержимого .o. .o должен удовлетворять требованиям .exe. Одна из них - это функция main.

Я обычно разделяю проекты на куски по темам. Каждая часть переведена в файл .o. Отдельная деталь не может быть преобразована в .exe, но все объединившиеся части могут быть преобразованы.

Например, если я скомпилирую следующий файл, он превратится в файл .o:
{hello.c}

#include <stdio.h>

void Hello()
{
  puts("Hello");
  return;
}

Затем я скомпилирую:

gcc -c hello.c -o hello.o

Это создаст файл hello.o. Это невозможно преобразовать в файл .exe, поскольку он не имеет функции запуска. Это просто информация.

Однако следующий текст может быть преобразован из .o в .exe:
{main.c}

#include <stdio.h>
int main(void)
{
  puts("Hello from main.\n");
  return 0;
}

Создайте файл .o:

  gcc -c -o main.o main.c

И поскольку он имеет точку входа, названную main по определению языка, main.o может быть преобразован в .exe:

  gcc -o main.exe main.o

Таким образом, некоторые файлы .o могут быть преобразованы в .exe, а другие - нет. На языках C и С++ файл .o должен иметь функцию main, чтобы стать исполняемым файлом .exe. Примечание. Спецификации языка C и С++ не требуют перевода в файлы .o перед созданием исполняемого файла.