如何使用-std = gnu99编译Linux内核模块?

如何使用-std = gnu99编译Linux内核模块?,第1张

概述我最近学会了如何编写简单的字符驱动程序,在玩这些代码的过程中,我注意到我的C99代码中出现了很多以下的GCC警告: warning: ISO C90 forbids mixed declarations and code 我假设这是因为主Linux内核Makefile设置为使用非C99标准进行编译.我在附近搜索,我发现这个答案在stackoverflow:How to use make and c 我最近学会了如何编写简单的字符驱动程序,在玩这些代码的过程中,我注意到我的C99代码中出现了很多以下的GCC警告:
warning: ISO C90 forbIDs mixed declarations and code

我假设这是因为主linux内核Makefile设置为使用非C99标准进行编译.我在附近搜索,我发现这个答案在stackoverflow:How to use make and compile as C99?

所以我自然在我的Makefile中尝试了以下内容:

ccflags-y := -std=gnu99

不幸的是,这并没有使GCC警告无声.我查看了make的详细输出并验证了GCC确实是在最后添加-std = gnu99的情况下执行的;所以我有点困惑.

如何使用-std = gnu99选项正确编译linux内核模块

编辑:

我注意到GCC输出显示了这个选项:-Wdeclaration-after-statement.这是为什么即使使用-std = gnu99选项我也会收到警告?

解决方法 事实证明-std = gnu99确实有效;删除编译器标志后,我开始看到有关C99功能的错误.所以这意味着除了-std =选项之外还有其他东西导致警告打印出来.

在通过make V = 1解析详细输出后,我发现了-Wdeclaration-after-statement选项作为GCC执行的一部分.这是我看到的ISO C90混合声明警告的原因.

要禁用ISO C90警告,请将其传递给GCC:-Wno-declaration-after-statement.

例如:

ccflags-y := -std=gnu99 -Wno-declaration-after-statement
总结

以上是内存溢出为你收集整理的如何使用-std = gnu99编译Linux内核模块?全部内容,希望文章能够帮你解决如何使用-std = gnu99编译Linux内核模块?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1047345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存