LINUX.ORG.RU

Компиляция exe под Linux

 ,


0

3

Здравствуйте, появилась необходимость скомпилировать exe под Linux. Для этих целей был использован i686-w64-mingw32-gcc. Но i686-w64-mingw32-gcc не видит заголовочных файлов ().

./main.c:1:10: fatal error: sys/socket.h: Нет такого файла или каталога #include <sys/socket.h> compilation terminated.

Подскажите, что можно с этим сделать? Или легче сразу на винде компилить?

Под mingw sys/socket нет, там winsock.

Подскажите, что можно с этим сделать

а) переписать под winsock

б) компилировать на винде

в) взять cygwin вместо mingw, там это есть

anonymous ()
Ответ на: комментарий от anonymous

б) компилировать на винде

ммм.. не совсем точен был. Тут с вариантом (в) вместе – все равно нужен будет cygwin, но под виндой он есть, а в линуксе нет; нужно будет оттуда выдирать библиотеки и заголовки.

anonymous ()

Либо тащи в проект реализацию сокетов беркли который в винде как бы нет от слова совем , либо используй виндовое нативное именно которое тебе и даёт MinGW.

И ещё вот, помнить важно что:


Скомпилируйте что-то в Cygwin, и вы компилируете его для Cygwin - (Cygwin - перенос POSIX на windows)

Скомпилируйте что-то в MinGW, и вы компилируете его для Windows - (MinGW - реализация средств разработки GNU для windows, нативная разработка и кросскомпиляция)

MinGW даёт разве что «unistd.h» тебе и всё. Как расширение в POSIX , но никакой цели тут нет.

LINUX-ORG-RU ★★ ()

Переделай под winsock или используй обертки. Я в свое время переделывал работающую через сокеты виндовую прогу, чтоб она с нормальными беркли-сокетами работала, там всё достаточно просто

SZT ★★★★ ()
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Winsock API базируется на BSD сокетах. socket/connect/bind/accept/send/recv/… всё есть. Но, да, это же MS, так что вместо close - closesocket, и ещё кое-какие субтильные отличия.

gag ★★★★★ ()