2013-09-16 5 views
3

Я пытаюсь скомпилировать окна .c файл на Linux с помощью следующей команды:MinGW кросскомпиляции

wine gcc.exe x.c -o x.exe -lws2_32 

И я получаю эту ошибку.

C:/MinGW/бен /../ Библиотека/GCC/mingw32/3.4.5 /../../../ libmingw32.a (main.o): main.c :(. текст + 0x104): неопределенная ссылка на `WinMain @ 16'

Однако при использовании gcc.exe с атрибутом -shared, пошла ошибка.

wine gcc.exe -shared x.c -o x.exe -lws2_32 

Я попытался просмотра страницы справки о gcc.exe, но не может найти все, что связано с «-shared» аргумент

Что этот аргумент делать?

ответ

2

-shared будет делать общий объект из кода, а не исполняемого файла.
Для исполняемого файла нужна основная функция в качестве точки входа, следовательно, вы заметили ошибку undefined reference. Общий объект может быть связан с другими объектами для создания исполняемого файла.
См here или here

0

Вы первая линия на самом деле почти правильно. (Doctorlove сказал вам, что общий для создания общих объектов, библиотек, что является истинным.)

Вы должны добавить:

wine gcc.exe -mwindows x.c -o x.exe -lws2_32 

Опция -mwindows это сказать GCC, что вы хотите link графический Windows, а не консольной программы. Конечно, ваша программа также должна содержать функцию main() или WinMain(), или вы получите то же сообщение об ошибке снова.

Как примечание, вы можете знать, что вам не нужно использовать вино для перекрестного компиляции с помощью Mingw. Для Linux существуют перекрестные компиляторы mingw. На Debian и Ubuntu вы установите его с помощью apt-get install mingw32.