【问题标题】:Compiler errors building using Cygwin and GCC使用 Cygwin 和 GCC 构建的编译器错误
【发布时间】:2018-10-22 00:22:11
【问题描述】:

我正在尝试使用 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]

花了几个小时在这里谷歌搜索和搜索都没有成功,我非常感谢任何帮助。

席德

【问题讨论】:

  • 你在构建什么开源包?
  • 你想为 Windows 还是 Cygwin 构建?这两件事不一样,错误似乎来自混合构建,可能来自包中的错误假设。
  • 该项目具有需要交叉编译的元素,而我遇到的一个问题是用于 Windows。需要交叉编译的元素可以正常编译。这是回购link

标签: gcc cygwin gcc-warning


【解决方案1】:

经过更多实验后,代码似乎需要一些额外的条件编译控制。我在代码中的几个地方添加了对 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

席德

【讨论】:

  • 是的。许多软件包要么完全不直接支持 Cygwin(要么它们是为 Windows 编写的,要么做出偏向 Linux 的假设),或者更邪恶地错误地假设 Cygwin 只是一些类似 Windows 的平台(Windows API 应该' 不能用于在 Cygwin 上构建软件包,除非它绝对无能为力)。因此,您可能需要制作与您制作的相同的补丁(如果可以,请尝试将它们提交到上游)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
相关资源
最近更新 更多