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.

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



Последнее исправление: lemon_worm (всего исправлений: 2)

Доустановить необходимые заголовки.

xDShot ★★★★★
()

может потому что в винде для сокетов нужны другие заголовочные файлы, а юниксовых под виндой нет?

reprimand ★★★★★
()

Под 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)
Ответ на: комментарий от anonymous

г) взять какую-нибудь кроссплатформенную обёртку над сокетами (да хотя бы из SDL).

hobbit ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

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

gag ★★★★★
()

Здравствуйте, появилась необходимость скомпилировать exe под Linux.

установи виртуалбокс, в нём винду и прекрати вылизывать яйца

darkenshvein ★★★★★
()

В винде нет sys/socket.h, там winsock и ws2

mittorn ★★★★★
()
Ответ на: комментарий от gag

Такое не только в винде, но и везде где bsd сокеты отдельно от libc. В том же wattcp например

mittorn ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.