You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Cygwin64执行make编译C代码出现cpuset.h、errno相关报错如何解决

问题原因
  • 编译参数携带-ansi:该参数强制编译器遵循C89标准,而C89标准不支持//格式的单行注释。Cygwin提供的/usr/include/sys/cpuset.h头文件中大量使用//注释,编译时注释内容被识别为有效代码,导致宏定义展开失败,抛出语法错误。
  • 头文件路径冲突:你当前使用的是MinGW架构的交叉编译器x86_64-w64-mingw32-gcc,但编译参数手动添加了-I /usr/include,该路径是Cygwin原生环境的头文件目录,和MinGW编译器自带的头文件产生冲突,进而触发errno重定义的警告。
解决方法
  • 调整C标准编译参数:如果项目没有强制兼容C89的要求,直接修改Makefile中的CFLAGS配置,删除-ansi参数即可。如果必须使用C89标准,可以将-ansi替换为-std=c89 -pedantic -Wno-comment,忽略单行注释的语法检查。
  • 移除错误的头文件路径配置:删除编译参数中的-I /usr/include,MinGW编译器会自动加载自身适配的头文件路径,不需要手动指定Cygwin原生头文件目录,即可解决头文件冲突问题。
  • 检查依赖安装:如果调整后仍提示依赖缺失,需要安装前缀为mingw64-x86_64-的MinGW版本依赖包,不要使用Cygwin原生的依赖包,两类依赖不兼容。

内容的提问来源于stack exchange,提问作者rage0920

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:15:08