如何让
Linux
内核
编译
驱动模块时支持
C99
嵌入式中
使用
的交叉
编译
器在
编译
时加上–std=
c99
选项可以支持
c99
arm-
linux
-gnueabihf-gcc test.c -o test --std=
c99
但在让内核
编译
驱动模块的时候并没有
使用
上述语句的机会,但是可以在内核模块的
Make
file文件中加入下面这句话让其支持
c99
ccflags-y := -std=gnu99 -Wno-declaration-after-statement
内核模块
Make
file示例如下(源文件test.c
make
时候报错,说需要
c99
,尝试
修改
c
make
file和
make
file都不成功,索性重装个新版gcc从根源上解决。
方法引用自centos7升级gcc - 云+社区 - 腾讯云
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
之后需要每次输入:
scl enable devtoolset-7 bash
来启用,否则gcc还是系统默认版本。
可以同过version来确认版本是否正...
如果写的LKM中 变量的定义在 函数之后,则会warning:
warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
正常在gcc中添加-std=
c99
即可。例如:
gcc -std=
c99
1.c -o 1
如果是在
Make
file中,添加这一行:
ccflags-y := -std=gnu99 -Wno-declaration-after-statement
# ccflag.
另外一种是针对某个target设置,这样不同的target之间可以不受影响
add_executable(BiquadFilter biquad_filter.c)
set_property(TARGET BiquadFilter PROPERTY C_STANDARD 99)
make
只是一个根据指定的Shell命令进行构建的工具
在
linux
和unix中,有一个强大的
使用
程序,叫
make
,可以用它来管理多模块程序的
编译
和链接,直至生成可执行文件
make
使用
程序读取一个说明文件,称为
Make
file,
Make
file文件中描述了整个软件工程的
编译
规则和各个文件之间的依赖关系;
Make
file就像是一个Shell脚本一样,其中可以执行操作系统的命令,它带来的好处就是我们能够实现“自动化
编译
”,一旦写好,只要一个
make
命令,整个软件功能就完全自动
编译
,极大的提高了软件.
《跟我一起写
make
file》可以被认为是《GUN
make
manual》的简化版或者说是学习笔记,适合入门学习。
《GUN
make
manual》可以当做参考手册,平时查阅。
一般来说 gcc 3.0 以上都是支持
C99
的但是
编译
的时候得加上 -std=
c99
检测 gcc 是否支持
C99
方法,新建
c99
.c 文件,内容如下#include <stdio.h>int main(void) {
#ifdef __STDC__
printf("%s\n", "stardard C");
#endif
#ifdef __STDC_VERSION__
Linux
在很多人眼中是非常好的操作系统,不仅因为它的内核和函数库的完整源
代码
都是公开的,而且因为它拥有许多好用的程序开发工具。下面就介绍几种常用的编程工具,熟悉这些工具对于开发
Linux
应用程序是很有必要的。当然了,像其它
Linux
程序一样,更详细的内容你能在man手册或info页中找到。
一.gcc
编译
器:
gcc是GNU提供的优秀的软件之一,其性能不亚于任
C语言主要
标准
C89、C90、
C99
、C11(最新版本),当用gcc
编译
通不过时会报错如:error: ‘for’ loop initial declarations are only allowed in
C99
mode。此时用如下
编译
语句即可:
gcc 源码名(如test.c) -std=
c99