Можно ли преобразовать файл объекта .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 перед созданием исполняемого файла.