Преобразование .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 и C ++ файл .o
должен иметь функцию main
, чтобы стать исполняемым файлом .exe
. Примечание. Спецификации языка C и C ++ не требуют перевода в .o
файлы перед созданием исполняемого файла.