Pasaba por aquí y he visto la nueva versión. Para que compile en Linux...
- En main.c
La variable sema_main sólo se define si WIN32 está definido. Pero en la línea 6087 se hace referencia a la variable siempre que GEKKO no esté definido.
Como en Linux ni GEKKO ni WIN32 pues no compila. Metiendo el código de la línea 6087 dentro de un #ifdef IS_WIN32 se soluciona.
- En online.c
* No hay variables tipo SOCKET, son "int"s normales.
* No hay INVALID_SOCKET ni SOCKET_ERROR, es simplemente "-1" (el tipo de error lo especifica la variable errno, pero...).
* sockaddr_in está definido en netinet/in.h, hace falta un include
* No hay closesocket(), se usa close() normal.
* NULL está definido en stdio.h, hace falta el include.