我正在尝试为c1000a构建open source drivers来修复我的路由器。但是,我遇到了一个奇怪的问题:
$ make PROFILE=963268BGW
make version is 3.81
kernel version is 3.13.0-29-generic
shell is /bin/sh. Bash version is
***************************************************
ERROR: /bin/sh does not invoke bash shell
***************************************************
make: *** [prebuild_checks] Error 1
任何人都可以解释这可能意味着什么吗?
答案 0 :(得分:4)
答案是有人编写了一个脚本或Makefile,它依赖于/bin/sh
作为Bash,并且不遗余力地编写代码以检测是否是这种情况,而不是编写找到shell的代码这是运行脚本所必需的,例如/bin/bash
或/usr/bin/bash
。
很容易告诉GNU Make用什么shell来执行build" recipes" (规则体),即SHELL
变量。默认值为/bin/sh/
,但如果您输入
SHELL = /usr/bin/bash # or whatever else
然后GNU Make将使用它。
我输出了测试/bin/sh
的逻辑的Makefile并将其解救出来,并将SHELL
变量设置为指向Bash。
答案 1 :(得分:0)
当您在Debian风格分发(例如Ubuntu)中进行编译时,可能会发生此错误。使用以下命令编译:
$> make PROFILE=963268BGW SHELL=/bin/bash