出现使用选项-std=c99或-std=gnu99来编译您的代码错误或者如何让Linux内核编译驱动模块时支持C99
最近在Linux系统下编译嵌入式代码时出现问题:
问题如下图:
然后发现问题出在这:
use option -std=c99 or -std=gnu99 to compile your code
上面的意思是:使用选项-std=c99或-std=gnu99来编译您的代码
后来才知道:gcc 默认使用的是 C89 的标准,而 C89 的标准不支持在 for 中定义循环变量,而在 for 循环中需要定义循环变量的话,需要在 C99 标准中才支持,因此需要增加 -std=c99 或 -std=gun99 参数才能编译通过。
所以在嵌入式中使用的交叉编译器在编译时加上–std=c99选项可以支持c99
arm-linux-gnueabihf-gcc test.c -o test --std=c99
然后问题解决:
但是如果在你是在让内核编译驱动模块的时候,并没有使用上述语句的机会,不过我们可以在内核模块的Makefile文件中加入下面这句话让其支持c99
ccflags-y := -std=gnu99 -Wno-declaration-after-statement
内核模块Makefile示例如下(源文件test.c):
KERNEL_DIR := /home/xxx/xxx
CURRENT_DIR := $(shell pwd)obj-m := test.o
ccflags-y := -std=gnu99 -Wno-declaration-after-statementkernel_module:$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules.PHONY:cleanclean: $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
出现使用选项-std=c99或-std=gnu99来编译您的代码错误或者如何让Linux内核编译驱动模块时支持C99相关推荐
- Linux 内核编译配置选项简介(转)
Linux 内核编译配置选项简介 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名 ...
- Linux 内核编译配置选项简介
Linux 内核编译配置选项简介 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名 ...
- Linux内核编译的选项 m,编译内核选项!~~
在正式介绍之前先作几点声明: 1)由于linux内核实在是太庞大了,涉及的内容包罗万象,我自己的水平也很有限,所以我不可能将内核配置的方方面面都写出来,本文中我只是将我认为最 重要的一些部分作一个介绍 ...
- linux内核配置参考,[转]Linux内核配置选项 参考(3)
Linux 2.6.7内核编译经验. 2.6高级的特点不在说了,服务器应运上其他系统(WIN-DOS什么是比不了的了)这里只说说对我们桌面用户有什么好处. 2.6中一个主要内部改变是现在内核自身是可抢 ...
- Linux内核安装后reboot选择,Linux内核配置选项 参考(3)
Linux 2.6.7内核编译经验. 2.6高级的特点不在说了,服务器应运上其他系统(WIN-DOS什么是比不了的了)这里只说说对我们桌面用户有什么好处. 2.6中一个主要内部改变是现在内核自身是可抢 ...
- KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】【use microlib选项】
SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...
- C++多线程:异步操作std::async和std::promise
文章目录 std::async 简介 使用案例 std::promise 简介 成员函数 总结 之前的文章中提到了C++多线程中的异步操作机制 C++ 多线程:future 异步访问类(线程之间安全便 ...
- C++中std::reverse和std::reverse_copy的使用
std::reverse:反转排序容器内指定范围中的元素. std::reverse_copy与std::reverse唯一的区别是:reverse_copy会将结果拷贝到另外一个容器中,而不影响原容 ...
- C++中std::function和std::bind
1.可调用对象 可调用对象有一下几种定义: 是一个函数指针,参考 C++ 函数指针和函数类型: 是一个具有operator()成员函数的类的对象: 可被转换成函数指针的类对象: 一个类成员函数指针: ...
最新文章
- win10 microsoft compatibility telemetry 禁用用户改善反馈服务进程 磁盘占用高
- c#获取父类_C#——父类中的this的指向,及用反射获取当前类所在的Type | 学步园...
- 浅谈Lucene中的DocValues
- Google单季度,营收超过753亿美元
- android studio logcat 无筛选 显示全部日志 无应用包名区分
- python提取txt数据到excel_python 读取txt中每行数据,并且保存到excel中的实例
- 【Linux】linux服务器下的帮助命令总结
- android自定义图片过渡效果,教你做出炫酷的Android动画效果
- eslint 报error
- 沈阳python需求大吗_学习Python之后都能做什么,沈阳Python薪资多少钱
- 基于JAVA高校实习实训管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
- python读取tiff文件_怎么用python读取和写入TIFF文件1
- 成语小秀才小程序V2.0.14完整安装包+小程序前端,小程序吸粉引流源码
- 斯坦福课程Knowledge Graphs-What is a Knowledge Graph?
- SpringMVC+LayUI 交通事故管理系统
- conda安装环境报错:Solving environment: failed with initial frozen solve.
- python第三方库bs4库实例之爬取古诗词网上诗歌
- 基尼系数,省级层面、地级市层面、Dagum1997方法,整理好的面板数据
- java毕业生设计忆居民宿管理计算机源码+系统+mysql+调试部署+lw
- 我的物联网项目初建团队
热门文章
- webshell检测方式深度剖析 --- Pixy系列一(格理论)
- 维度和指标(metrics and dimensions)
- python读取csv内容变为nan_Python pandas read_csv 中NULL当成NaN类型问题
- Echarts河北地图缺少雄安新区(合并、调整地图边缘)的解决办法
- Windows 系统配置 Seetaface6并跑通其中人脸识别emo程序
- 【TypeScript】TS自定义类型之对象属性必选、对象属性可选
- 通过表观遗传,沉默癌症基因
- java sleep唤醒_Java中的等待唤醒机制—至少50%的工程师还没掌握!
- codeforces Taming the Herd
- 不用重装系统 Windows 7下直接开启AHCI