最近在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相关推荐

  1. Linux 内核编译配置选项简介(转)

    Linux 内核编译配置选项简介 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名 ...

  2. Linux 内核编译配置选项简介

    Linux 内核编译配置选项简介 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名 ...

  3. Linux内核编译的选项 m,编译内核选项!~~

    在正式介绍之前先作几点声明: 1)由于linux内核实在是太庞大了,涉及的内容包罗万象,我自己的水平也很有限,所以我不可能将内核配置的方方面面都写出来,本文中我只是将我认为最 重要的一些部分作一个介绍 ...

  4. linux内核配置参考,[转]Linux内核配置选项 参考(3)

    Linux 2.6.7内核编译经验. 2.6高级的特点不在说了,服务器应运上其他系统(WIN-DOS什么是比不了的了)这里只说说对我们桌面用户有什么好处. 2.6中一个主要内部改变是现在内核自身是可抢 ...

  5. Linux内核安装后reboot选择,Linux内核配置选项 参考(3)

    Linux 2.6.7内核编译经验. 2.6高级的特点不在说了,服务器应运上其他系统(WIN-DOS什么是比不了的了)这里只说说对我们桌面用户有什么好处. 2.6中一个主要内部改变是现在内核自身是可抢 ...

  6. KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】【use microlib选项】

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

  7. C++多线程:异步操作std::async和std::promise

    文章目录 std::async 简介 使用案例 std::promise 简介 成员函数 总结 之前的文章中提到了C++多线程中的异步操作机制 C++ 多线程:future 异步访问类(线程之间安全便 ...

  8. C++中std::reverse和std::reverse_copy的使用

    std::reverse:反转排序容器内指定范围中的元素. std::reverse_copy与std::reverse唯一的区别是:reverse_copy会将结果拷贝到另外一个容器中,而不影响原容 ...

  9. C++中std::function和std::bind

    1.可调用对象 可调用对象有一下几种定义: 是一个函数指针,参考 C++ 函数指针和函数类型: 是一个具有operator()成员函数的类的对象: 可被转换成函数指针的类对象: 一个类成员函数指针: ...

最新文章

  1. win10 microsoft compatibility telemetry 禁用用户改善反馈服务进程 磁盘占用高
  2. c#获取父类_C#——父类中的this的指向,及用反射获取当前类所在的Type | 学步园...
  3. 浅谈Lucene中的DocValues
  4. Google单季度,营收超过753亿美元
  5. android studio logcat 无筛选 显示全部日志 无应用包名区分
  6. python提取txt数据到excel_python 读取txt中每行数据,并且保存到excel中的实例
  7. 【Linux】linux服务器下的帮助命令总结
  8. android自定义图片过渡效果,教你做出炫酷的Android动画效果
  9. eslint 报error
  10. 沈阳python需求大吗_学习Python之后都能做什么,沈阳Python薪资多少钱
  11. 基于JAVA高校实习实训管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  12. python读取tiff文件_怎么用python读取和写入TIFF文件1
  13. 成语小秀才小程序V2.0.14完整安装包+小程序前端,小程序吸粉引流源码
  14. 斯坦福课程Knowledge Graphs-What is a Knowledge Graph?
  15. SpringMVC+LayUI 交通事故管理系统
  16. conda安装环境报错:Solving environment: failed with initial frozen solve.
  17. python第三方库bs4库实例之爬取古诗词网上诗歌
  18. 基尼系数,省级层面、地级市层面、Dagum1997方法,整理好的面板数据
  19. java毕业生设计忆居民宿管理计算机源码+系统+mysql+调试部署+lw
  20. 我的物联网项目初建团队

热门文章

  1. webshell检测方式深度剖析 --- Pixy系列一(格理论)
  2. 维度和指标(metrics and dimensions)
  3. python读取csv内容变为nan_Python pandas read_csv 中NULL当成NaN类型问题
  4. Echarts河北地图缺少雄安新区(合并、调整地图边缘)的解决办法
  5. Windows 系统配置 Seetaface6并跑通其中人脸识别emo程序
  6. 【TypeScript】TS自定义类型之对象属性必选、对象属性可选
  7. 通过表观遗传,沉默癌症基因
  8. java sleep唤醒_Java中的等待唤醒机制—至少50%的工程师还没掌握!
  9. codeforces Taming the Herd
  10. 不用重装系统 Windows 7下直接开启AHCI