如何解决cc1: some warnings being treated as errors make[2]: *** [/usr/src/linux-headers-6.1.0-kali9-common/scripts/Makefile.build:255:/root/桌面/rtl8821CU/os_dep/osdep_service.o] 错误 1 make[1]: *** [/usr/src/linux-headers-6.1.0-kali9-common/Makefile:2037:/root/桌面/rtl8821CU] 错误 2 make[1]: 离开目录“/usr/src/linux-headers-6.1.0-kali9-amd64” make: *** [Makefile:2217:modules] 错误 2
时间: 2023-12-06 15:05:12 浏览: 643
这个错误提示指出了编译过程中出现了一些警告,并且这些警告被视为错误。要解决这个问题,可以尝试在编译命令中添加参数" -Wno-error" 来忽略警告。
具体来说,可以将编译命令修改为:
```
make -j4 CFLAGS="-Wno-error" && sudo make install
```
其中,"-j4" 参数用于指定编译并行数,可以根据实际情况进行调整。
如果这个方法不能解决问题,可能需要进一步检查编译环境和依赖库是否正确安装,并尝试查看编译日志以了解更多详细信息。
相关问题
cc1: some warnings being treated as errors ,具体解决方法,举个例子
这个错误提示通常是由于编译器开启了将警告作为错误来处理的选项,导致一些警告被视为错误而停止编译。解决方法有两个:
1. 关闭将警告作为错误的选项,这样编译器就不会把警告当成错误来处理了。具体方式可以在编译命令中添加 `-Wno-error` 选项,比如:
```
gcc -Wno-error file.c
```
2. 修复警告,使得编译通过。具体方式需要根据具体的警告信息来进行修复。举个例子,比如这个警告:
```
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=]
```
这个警告是因为在使用 `%d` 格式化字符串时,传入了一个类型为 `double` 的参数。可以通过将参数转换为整型来修复:
```
int num = (int) double_num;
printf("%d", num);
```
或者使用 `%f` 格式化字符串来输出浮点型:
```
printf("%f", double_num);
```
修复完警告后,再次编译就可以通过了。
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()`函数指定为正确的类型,并解决编译错误。
阅读全文