Windows下执行gem install rails报gem原生扩展构建失败求助
Windows环境Rails安装编译失败问题定位与解决
问题成因
报错触发于websocket-driver 0.7.3原生扩展编译阶段,出现Makefile:269: *** multiple target patterns. Stop.错误的核心原因如下:
- Ruby安装路径包含空格(示例场景中路径为
D:/Program Files/Ruby30-x64,Program Files目录名存在空格分隔),配套Mingw环境中的GNU Make工具解析带空格的路径生成Makefile时,会将空格后的路径段误识别为独立编译目标,直接触发多目标匹配报错 websocket-driver 0.7.3版本对Windows平台Ruby 3.0环境的Makefile路径转义逻辑存在缺陷,未对带空格的安装路径做自动转义处理,进一步放大了路径兼容问题
可执行解决方案
按操作优先级从高到低实施:
- 优先拉取预编译包安装,跳过本地编译环节:执行
gem install rails --platform x64-mingw-ucrt,参数会自动匹配Windows x64平台的预编译二进制gem包,无需本地调用make完成原生扩展编译,从根源避开Makefile解析报错 - 清理安装残留缓存:执行
gem cleanup命令,清除之前安装中断残留的gem文件、临时编译目录,避免旧缓存引发重复报错 - 调整Ruby安装路径规避兼容问题:将Ruby整体目录迁移到无空格、无中文的纯英文路径下(例如直接放置在
D:/Ruby30-x64,不要嵌套在带空格的Program Files类目录中),重新执行gem install rails即可正常完成编译流程 - 临时兜底修正:若暂时无法调整安装路径,可进入报错日志提示的
websocket-driver/ext/websocket-driver目录,手动打开生成的Makefile,将第269行附近所有包含空格的路径段用双引号包裹(例如将D:/Program Files/Ruby30-x64/...修改为"D:/Program Files/Ruby30-x64/..."),保存后重新执行安装命令
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

