Winsock2.h:没有这样的文件或目录

Winsock2.h:没有这样的文件或目录,c,linux,compilation,mingw32,windows-2000,C,Linux,Compilation,Mingw32,Windows 2000,我正在尝试使用mingw32 for Linux进行编译 但是,我收到以下错误和警告: # i586-mingw32msvc-gcc ms04-020.c -lws2_32 -o ms04-020.exe ms04-020.c:43:22: error: Winsock2.h: No such file or directory ms04-020.c: In function ‘main’: ms04-020.c:113: warning: incompatible implicit decla

我正在尝试使用mingw32 for Linux进行编译

但是,我收到以下错误和警告:

# i586-mingw32msvc-gcc ms04-020.c -lws2_32 -o ms04-020.exe
ms04-020.c:43:22: error: Winsock2.h: No such file or directory
ms04-020.c: In function ‘main’:
ms04-020.c:113: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:114:11: warning: unknown escape sequence '\;'
ms04-020.c: In function ‘readwrite’:
ms04-020.c:251: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:259: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:264: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:279: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:285: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:290: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:301: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:307: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:312: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c: In function ‘client_connect’:
ms04-020.c:333: warning: incompatible implicit declaration of built-in function ‘printf’
ms04-020.c:343: warning: incompatible implicit declaration of built-in function ‘printf’

如何修复有关
Winsock2.h
的错误?不过,我确实设法在Windows7上使用VisualStudio2013编译了该文件,这将是一个可接受的解决方案。因此,即使以这种方式构建,二进制文件也不会执行。

正如您可以从其名称猜到的,
winsock2.h
与TCP/IP套接字的Windows实现直接相关,并且只存在于Windows系统上

Windows和Linux之间可能很难完全兼容
include
。嗯,你应该:

  • 从源代码中删除
    #包括
    ,以便Linux编译或更好地编写:

    #ifdef _WIN32
    #include <Winsock2.h>
    #endif
    
    \ifdef\u WIN32
    #包括
    #恩迪夫
    
  • 添加(最终在
    #else
    部分)缺少的标题

当前,
警告:内置函数“printf”的不兼容隐式声明
表明您缺少一个
#include

Windows系统头文件是否位于编译器默认搜索的路径中?您可能需要使用
-I
(大写I)选项来添加路径。@JoachimPileborg:我没有
Winsock2.h
文件-从哪里可以获得它?我不知道是否有包含WIN32系统库和头文件的MinGW包,您应该查找它。如果没有,应该有大量的教程如何做。很好-不需要
#else
部分-它通过去掉
#include
行并添加
#include
来编译。