编译Linux Kernel 4.18时发生编译时错误

时间:2018-10-24 19:08:11

标签: linux gcc compiler-errors linux-kernel

我正在尝试在编译Linux内核4.18时禁用内联。

为此,我根据以下内容更新了Makefile:https://elinux.org/Kernel_dynamic_memory_analysis#Obtaining_accurate_call_sites_.28or_The_painstaking_task_of_wrestling_against_gcc.29

但是在编译时出现以下错误:

  

错误:调用声明为“ __compiletime_assert_1094”且属性错误:BUILD_BUG_ON失败:p4d_large(* p4d)

在内核构建过程中禁用内联时如何摆脱错误?

1 个答案:

答案 0 :(得分:0)

BUILD_BUG_ON()需要一个常量表达式。有时将对内联函数的调用传递给它。 GCC能够将某些内联函数优化为常量表达式,从而使其起作用。禁用内联将防止这种情况,破坏构建。 (在某些情况下,这对于Clang也是一个问题,它在内联之前进行语义分析。)

您可能必须更改很多代码才能构建禁用内联的内核。您引用的页面相当旧;大概当时那不是问题。