arch/x86/kvm/svm/pmu.c: In function ‘get_gp_pmc_amd’: arch/x86/kvm/svm/pmu.c:56:20: error: logical not is only applied to the left hand side of comparison [-Werror=logical-not-parentheses] if (!(msr & 0x1) != (type == PMU_TYPE_EVNTSEL)) ^ cc1: all warnings being treated as errors scripts/Makefile.build:252: recipe for target 'arch/x86/kvm/svm/pmu.o' failed make[3]: *** [arch/x86/kvm/svm/pmu.o] Error 1 scripts/Makefile.build:494: recipe for target 'arch/x86/kvm' failed make[2]: *** [arch/x86/kvm] Error 2 scripts/Makefile.build:494: recipe for target 'arch/x86' failed make[1]: *** [arch/x86] Error 2 Makefile:2025: recipe for target '.' failed make: *** [.] Error 2
时间: 2024-04-03 22:36:16 浏览: 12
这是一个编译错误,可能是由于代码中的逻辑问题导致的。在该函数中,有一个条件语句,它使用了逻辑非运算符。然而,这个运算符只应该用在比较运算符的左侧,而不是右侧。因此,编译器会提示一个警告,并将其视为错误。为了解决这个问题,你需要检查代码中的条件语句,并确保它们的逻辑正确。可能需要添加额外的括号,以明确运算符的优先级。
相关问题
arch/x86/makefile:142: config_x86_x32 enabled but no binutils support
### 回答1:
这个错误提示是在编译x86架构的代码时出现的,意思是虽然启用了config_x86_x32选项,但是没有binutils的支持。binutils是一组二进制工具,包括汇编器、链接器等等,是编译器的重要组成部分。因此,需要安装binutils或者检查是否正确配置了路径。
### 回答2:
这个错误信息出现在编译Linux内核时,因为在makefile文件中启用了x86_x32配置,但是当前的binutils版本不支持x86_x32。
x86_x32是一种新的32位模式,它允许在64位系统上以本机速度执行32位代码,且具有更小的内存占用和更快的中断响应时间。但是,支持x86_x32需要一些特殊的binutils工具链。
Binutils是GNU工具集的一部分,提供了各种处理二进制文件的工具,如链接器、汇编器等。它们与特定的CPU体系结构以及操作系统紧密相关。
如果在编译Linux内核时启用了x86_x32配置,但当前的binutils版本不支持x86_x32,则可能导致编译失败,并显示上述错误信息。
解决此问题的方法是更新binutils到最新版本,或者禁用x86_x32配置。如果不需要使用x86_x32,则可以简单地注释掉makefile中的相关行:
#CONFIG_X86_X32=y
然后重新运行make命令即可。如果必须使用x86_x32,则需要检查当前的binutils版本是否支持,并根据需要更新或安装binutils工具链。
总之,arch/x86/makefile:142: config_x86_x32 enabled but no binutils support错误信息的出现通常是因为binutils版本不支持x86_x32,需要更新或禁用配置才能解决。
### 回答3:
这条提示的意思是,在执行Linux内核源代码中arch/x86/makefile文件的第142行时,发现配置了config_x86_x32选项,但是没有对应的binutils支持。
首先,需要了解一下config_x86_x32是什么。x32是一种32位程序模型,同时也允许使用64位寄存器和指令。这种模型相比传统的32位模型具有更好的性能和内存使用效率。而config_x86_x32选项是用来启用x32模型的内核支持。
然后,需要了解一下binutils是什么。binutils是GNU工具集中的一个重要组件,它包括了一系列的二进制文件操作工具,如汇编器、链接器、反汇编器等等。在编译Linux内核时,binutils是必不可少的组件之一。
因此,这条提示的意思是当启用config_x86_x32选项时,应该也同时提供对应的binutils支持,否则会出现错误。解决这个问题的方法是安装与所使用的Linux内核版本相对应的binutils版本,在编译时加入对应的选项。例如,对于Linux内核版本4.2及以上,应该使用binutils 2.26及以上版本,并在编译时加入-x32选项来启用x32模型支持。
WARNING: CPU: 0 PID: 1 at arch/x86/events/intel/core.c:4151 intel pmu init
同样的,这也是一个警告信息,通常是由于系统发生了错误或警告而显示的。这个警告信息可能与CPU或性能监控有关,如果你遇到了这个警告信息,可以尝试查找相关的解决方案或者联系相关的技术支持人员或社区来获得帮助。通常情况下,这个警告信息并不会影响系统的正常运行,但如果你发现它会导致系统崩溃或其他问题,那么你应该尽快采取措施来解决它。