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