我采用了Linux内核版本4.9.30,添加了一个新目录/ fsac,其文件包含来自其他目录(/ include / fsac)的标头,这几乎是我所做的全部更改。尝试编译时,在/kernel/sched/core.c中收到很多错误,看起来像这样:
kernel/sched/core.c:2326:20: error: invalid storage class for function ‘set_schedstats’
kernel/sched/core.c:2342:19: error: invalid storage class for function ‘setup_schedstats’
(...)
在网上搜索时,我发现建议是简单地从功能中删除“静态”。这样做有效地避免了该错误,但是相反,我开始从objtool收到很多警告,例如对于每个静态被删除的函数,如“框架指针状态不匹配”。
我发现可以通过更改配置文件CONFIG_STACK_VALIDATION=n
来避免这些警告。可以,但是即使没有警告,编译也会失败(错误2)。
因此,我想知道:
1-从冒犯的功能中删除“静态”是正确的解决方法吗?
2-如果是这样,我该如何处理objtool警告?仅这些警告会构成编译错误,还是必须存在其他错误?
3-您认为我应该降低GCC吗?
这是项目的源代码:https://github.com/Zildj1an/FSAC_Kernel这是不删除静态变量的编译日志:https://github.com/Zildj1an/FSAC_Kernel/blob/master/build_err
我会很乐意提供您可能需要的其他信息。
欢呼声。
发现问题,我在函数内部有一个函数...可能在复制其他内容时被移动了。