make[1]: *** [Makefile:146:sub-make] 错误 2 make: *** [Makefile:24:__sub-make] 错误 2
时间: 2023-12-15 12:30:56 浏览: 114
这个错误通常是由于在Makefile文件中缺少依赖关系或者命令语法错误导致的。可以尝试以下几种方法来解决这个问题:
1.检查Makefile文件中的依赖关系是否正确,以及命令是否正确。可以使用“make -n”命令来检查Makefile文件中的命令是否正确。
2.检查Makefile文件中是否存在空格或Tab符号。在Makefile文件中,命令必须以Tab符号开头,而不是空格。
3.检查Makefile文件中是否存在语法错误。可以使用“make -p”命令来检查Makefile文件中的语法错误。
以下是一个可能的解决方案:
```shell
make clean
make
```
如果这个解决方案不能解决问题,你可以尝试检查Makefile文件中的依赖关系和命令是否正确,并确保没有语法错误。
相关问题
../kernel/taskstats.c:479:6: error: #elif with no expression #elif ^ make[3]: *** [../scripts/Makefile.build:339:kernel/taskstats.o] 错误 1 make[2]: *** [/home/xy/Kernel/Kernel/Makefile:1178:kernel] 错误 2 make[1]: *** [Makefile:146:sub-make] 错误 2 make: *** [Makefile:24:__sub-make] 错误 2
这个错误提示通常表示在条件编译中出现了 `#elif` 而没有给出表达式。在你的错误信息中,`#elif` 后面没有给出具体的条件表达式,导致编译失败。
要解决这个问题,可以按照以下步骤进行处理:
1. 打开 `../kernel/taskstats.c` 文件,并找到报错行 `#elif`。
2. 确认在 `#elif` 后面是否缺少了条件表达式。条件表达式应该是一个布尔表达式,用于确定是否满足该分支的条件。
3. 在 `#elif` 后面添加适当的条件表达式。例如:
```c
#elif defined(CONFIG_XYZ)
```
其中 `CONFIG_XYZ` 是一个代表某个配置选项的宏定义,具体的宏定义应该根据你的代码和需求而定。
4. 保存文件并重新编译。
如果以上步骤仍然没有解决问题,请提供更多的具体信息,尤其是报错行附近的代码片段,以便我能够更好地帮助你解决这个问题。
*** No rule to make target `arch//Makefile'. Stop. make: *** [sub-make] Error 2
在引用中,*** No rule to make target `arch//Makefile'. Stop. 的意思是在执行make命令时,找不到指定的目标文件arch/Makefile。这可能是因为在项目中缺少了该文件或者Makefile中的规则有误。由于缺少了指定的目标文件,make命令无法继续执行,从而出现了错误信息。
在引用中,recipe for target 'scripts/mod/empty.o' failed 的意思是在执行make命令时,生成scripts/mod/empty.o文件的规则出现了错误。可能是Makefile.build文件中对应的规则有误,导致生成目标文件失败。
在引用中,recipe for target 'scripts/mod' failed 的意思是在执行make命令时,生成scripts/mod目录的规则出现了错误。可能是Makefile.build文件中对应的规则有误,导致生成目录失败。
总结来说,出现这些错误信息是因为在执行make命令时,无法找到或生成指定的目标文件或目录。这可能是由于缺少文件、规则有误或其他原因导致的。