arch/x86/Makefile:184: *** Compiler lacks asm-goto support.. Stop.
时间: 2023-07-18 09:43:19 浏览: 147
这个错误提示表明您的编译器不支持 `asm-goto` 扩展。`asm-goto` 是 Linux 内核中用于实现快速路径的一种机制,需要编译器支持。
如果您使用的是 GCC 编译器,那么您需要确保使用的是 GCC 4.5 或更高版本,并启用 `-fno-delete-null-pointer-checks` 选项。
如果您使用的是 Clang 编译器,那么您需要确保使用的是 Clang 3.9 或更高版本,并启用 `-fexperimental-new-pass-manager` 选项。
您可以在 Makefile 中添加以下选项来启用 `asm-goto` 扩展:
```
KBUILD_CFLAGS += -fno-delete-null-pointer-checks -fno-PIE -no-pie
```
如果您仍然遇到问题,可以尝试更新您的编译器版本,或者使用支持 `asm-goto` 扩展的编译器。
相关问题
*** 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命令时,无法找到或生成指定的目标文件或目录。这可能是由于缺少文件、规则有误或其他原因导致的。
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模型支持。
相关推荐















