makefile:1085: recipe for target 'test' failed make: *** [test] error 2
时间: 2023-09-06 18:11:48 浏览: 237
这个错误提示通常表示在执行 "make test" 时,编译器或链接器遇到了错误,导致测试程序无法成功编译或运行。具体错误信息可能需要查看编译器或链接器的输出日志才能确定。您可以尝试重新编译程序并查看详细的编译日志,以确定问题所在。另外,也可以尝试在 Makefile 中增加 "-v" 或 "-d" 等选项来开启详细的调试信息,以便更好地定位问题。
相关问题
In file included from /home/lmp/000/module/hello.c:2:0: /home/lmp/000/module/hello.c: In function ‘__exittest’: /home/lmp/000/module/hello.c:14:13: error: return from incompatible pointer type [-Werror=incompatible-pointer-types] module_exit(hello_exit); ^ ./include/linux/module.h:136:11: note: in definition of macro ‘module_exit’ { return exitfn; } \ ^ cc1: some warnings being treated as errors scripts/Makefile.build:337: recipe for target '/home/lmp/000/module/hello.o' failed make[2]: *** [/home/lmp/000/module/hello.o] Error 1 Makefile:1584: recipe for target '_module_/home/lmp/000/module' failed make[1]: *** [_module_/home/lmp/000/module] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-142-generic' Makefile:4: recipe for target 'all' failed make: *** [all] Error 2
这个错误是由于`module_exit()`的使用不正确导致的。`module_exit()`函数需要一个函数指针作为参数。该函数指针指向一个函数,该函数将在卸载模块时被调用。
你的代码中使用的是一个指向`void`类型的函数指针,而实际上它需要一个指向`void __exit`类型的函数指针。
要解决这个问题,请将你的`hello_exit()`函数的返回类型更改为`void __exit`,如下所示:
```
static void __exit hello_exit(void) {
printk(KERN_INFO "Goodbye, world!\n");
}
module_exit(hello_exit);
```
这样做将把`hello_exit()`函数指定为正确的类型,并解决编译错误。
make -C /home/luyuan/linux_cc M=/home/luyuan/Learn_Drives/1_chardevbase modules make[1]: Entering directory '/home/luyuan/linux_cc' scripts/Makefile.build:263: target '/home/luyuan/Learn_Drives/1_chardevbase/test1dev.ko' doesn't match the target pattern CC [M] /home/luyuan/Learn_Drives/1_chardevbase/test1dev.ko arm-linux-gnueabihf-gcc: fatal error: no input files compilation terminated. scripts/Makefile.build:264: recipe for target '/home/luyuan/Learn_Drives/1_chardevbase/test1dev.ko' failed make[2]: *** [/home/luyuan/Learn_Drives/1_chardevbase/test1dev.ko] Error 1 Makefile:1384: recipe for target '_module_/home/luyuan/Learn_Drives/1_chardevbase' failed make[1]: *** [_module_/home/luyuan/Learn_Drives/1_chardevbase] Error 2 make[1]: Leaving directory '/home/luyuan/linux_cc' Makefile:14: recipe for target 'kernel_modules' failed make: *** [kernel_modules] Error 2
这是一个make命令的输出,它用于编译和构建一个项目。根据输出,可以看到编译过程中遇到了一些错误。
首先,输出显示了一个错误信息:"target '/home/luyuan/Learn_Drives/1_chardevbase/test1dev.ko' doesn't match the target pattern"。这可能是因为Makefile中的目标模式与实际的目标文件不匹配,导致无法生成目标文件。
接下来,输出显示了一个致命错误:"arm-linux-gnueabihf-gcc: fatal error: no input files"。这是由于没有指定输入文件导致的,编译器无法找到需要编译的源文件。
最后,输出显示了两个错误信息:"recipe for target '/home/luyuan/Learn_Drives/1_chardevbase/test1dev.ko' failed"和"recipe for target '_module_/home/luyuan/Learn_Drives/1_chardevbase' failed"。这表明在构建目标文件时出现了错误。
要解决这些错误,你可以检查Makefile中的目标模式是否正确,并确保所有需要编译的源文件都正确地指定为输入文件。此外,还应该检查相关的依赖关系和路径设置,确保编译过程中的所有文件都能够正确找到并链接。
阅读全文