请求协助:强制GNU Make使用指定Shell解决跨系统构建报错
解决Makefile报错:make: /usr/bin/sh: Command not found
这个问题是跨系统移植项目时很常见的Shell路径不匹配问题,下面给你几个实用的解决办法:
方法1:在Makefile中全局指定Shell路径(推荐)
直接在你的Makefile最顶部添加一行,强制Make使用当前系统的Shell可执行文件:
# 如果新系统环境固定,可直接写死路径 SHELL := /bin/sh # 更通用的写法:自动获取当前系统的Shell路径,新旧系统都能兼容 SHELL := $(shell which sh)
如果你的Makefile脚本依赖bash的专属特性(比如数组、高级字符串处理),可以把sh换成bash:
SHELL := $(shell which bash)
方法2:执行make时临时指定Shell
如果不想修改Makefile,或者只是临时调试,可以在执行make命令时通过环境变量指定Shell路径:
make SHELL=/bin/sh
这种方式适合一次性的测试场景。
报错原因说明
Make工具默认会硬编码使用/usr/bin/sh作为执行Shell的路径,但你的新系统中Shell实际位于/bin/目录,且没有建立/usr/bin/sh到/bin/sh的软链接,导致Make找不到指定的Shell可执行文件,从而触发了这个报错。
内容的提问来源于stack exchange,提问作者Mr.Weathers
相关产品推荐
相关产品推荐

