Можно ли преобразовать файл объекта .o, который был создан из исходного кода .c в .exe? И если возможно, существует ли прямая команда с использованием gcc?
Преобразовать файл .o в .exe
Ответ 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
перед созданием исполняемого файла.