使用Cygwin和GCC生成编译器时出错

使用Cygwin和GCC生成编译器时出错,gcc,cygwin,gcc-warning,Gcc,Cygwin,Gcc Warning,我正在尝试使用Cygwin和GCC在Windows上构建一个开源软件包。我遇到了如下错误,我在StackOveflow的其他地方找到的任何解决方案都没有解决这些问题: /usr/include/w32api/psdk_inc/_fd_types.h:100:2: error: #warning "fd_set and associated macros have been defined in sys/types. This can cause runtime problems wit

我正在尝试使用Cygwin和GCC在Windows上构建一个开源软件包。我遇到了如下错误,我在StackOveflow的其他地方找到的任何解决方案都没有解决这些问题:

/usr/include/w32api/psdk_inc/_fd_types.h:100:2: error: #warning "fd_set and associated macros have been defined in sys/types.      This can cause runtime problems with W32 sockets" [-Werror=cpp]
我花了几个小时在谷歌上搜索,但没有成功,我真的非常感谢任何帮助


Sid

经过更多的实验,代码似乎需要一些额外的条件编译控制。我在代码中的几个地方添加了对Cygwin环境的检查。以前只有“_WIN32”存在:

#if !defined(_WIN32) && !defined(__CYGWIN__)
#   include <sys/socket.h>
#   include <netinet/in.h>
#   include <netinet/tcp.h>
#   include <sys/select.h>
#else
#   include <winsock2.h>
#   include <windows.h>
#   include <ws2tcpip.h>
#endif
#如果!已定义(_WIN32)&&!已定义(uuu CYGWIN_uuuu)
#包括
#包括
#包括
#包括
#否则
#包括
#包括
#包括
#恩迪夫

Sid

您正在构建什么开源软件包?您希望为Windows还是Cygwin构建?这两件事是不一样的,错误似乎来自一个混合构建,可能来自包中的错误假设。该项目有需要交叉编译的元素,而我有问题的一个是Windows。需要交叉编译的元素可以很好地编译。这就是回购协议。许多软件包要么直接不支持Cygwin(要么它们是为Windows编写的,要么做出偏向Linux的假设),要么更邪恶地错误地认为Cygwin只是一些类似Windows的平台(Windows API不应用于在Cygwin上构建软件包,除非绝对没有帮助)。因此,您可能需要制作与您制作的补丁类似的补丁(如果可以,请尝试向上游提交)。