我正在尝试在编译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)
在内核构建过程中禁用内联时如何摆脱错误?
答案 0 :(得分:0)
BUILD_BUG_ON()
需要一个常量表达式。有时将对内联函数的调用传递给它。 GCC能够将某些内联函数优化为常量表达式,从而使其起作用。禁用内联将防止这种情况,破坏构建。 (在某些情况下,这对于Clang也是一个问题,它在内联之前进行语义分析。)
您可能必须更改很多代码才能构建禁用内联的内核。您引用的页面相当旧;大概当时那不是问题。