在Zephyr下是没有文件系统的,因为Zephyr主打低功耗,如果在低功耗环境上在搭载文件系统会使得代码变得沉重与复杂化,如果我们一般想要包含一些文件的话Zephyr的Cmake提供了一组开发环境包,其中generate_inc_file_for_target就是将指定文件转化为inc文件。

这个函数的作用就是将一个文件的数组转化为unsigned char数组,不过不会定义变量,只是一组数据。

如xxx.jpg会转化为0x12,0x13,0x14这样的数据格式,可以在代码里直接包含

接下来我们在cmake里使用它

generate_inc_file_for_target(app image/test.jpg ${ZEPHYR_BINARY_DIR}/include/generated/test.inc)

里面的image目录是与你的src同级目录

${ZEPHYR_BINARY_DIR}/include/generated/是Zephyr的build输出bin文件目录,include/generated是输出的头文件目录,这个目录会在编译时增加-i选项增加进来,这样就不需要包含绝对路径了

然后我们就可以开始在代码里使用它,这里利用include的特性,因为include包含文件在编译期间内容会被展开,而zephyr生成的inc文件是符合数组格式的

unsigned char test[] = {#include<test.inc>};

如果想计算长度可以使用sizeof

Zephyr在编译时将二进制文件转化成c语言数组相关推荐

  1. c语言编译时检查逻辑错误吗,C语言陷阱与技巧20节,自定义“编译时”assert方法,在代码编译阶段检查“逻辑”错误...

    在C语言程序开发中,程序员写代码时应该考虑的"面面俱到",这样才能写出功能稳定的程序.例如,在实现 open() 函数时,先完成它的功能固然是重要的,但是程序员还需要考虑各种&qu ...

  2. Linux上将二进制文件转化为c语言数组

    在Linux下有一个非常好用的工具叫xxd,可以在debian仓库直接安装 sudo apt install xxd 然后通过如下命令就可以将文件转成c语言数组文件了 xxd -i xxx.jpg & ...

  3. java AST 表达式_java 编译时注解-AST 抽象语法树简介

    AST 语法入门 以前使用 Lombok 一直觉得是一个很棒的设计,可以同时兼顾注解的遍历和运行的性能. 运行时注解一直因为性能问题被人诟病. 自己尝试写过一些框架,但是耗费了比较多的精力,因为 AS ...

  4. 【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术

    文章目录 一.Android 中的 Java 源码打包流程 1.Java 源码打包流程 2.字符串常量池 二.Android 中的字节码操作方式 一.Android 中的 Java 源码打包流程 Ja ...

  5. 编译时如何看到每个文件的编译选项_导出 Clang 可视化编译耗时分析报告 —— ftimetrace 的使用...

    前言 笔者最近加入了新的团队,开始负责编译打包相关工作,因而开始学习优化编译时间相关技术.讲真,蛮开心的,每天都有挑战,同时每天都有收获,天天都在涨姿势,所以想记录下来并分享出来,也方便以后自己需要时 ...

  6. Linux编译时如何减小so库文件的大小

    Linux编译时如何减小so库文件的大小 今天问了我这个问题,我就顺便记录一下.客户问为什么libc.so文件再编译前和编译后的size不一样啊,staging 和 compile 两个dir下的 l ...

  7. Unreal Engine 4:编译时出现中文乱码问题

    在中文windows下,使用中文版本的Visual Studio基于Unreal Engine 4开发C++代码,在Unreal Engine 4中编译时,在Output Log中总会出现乱码: Lo ...

  8. C/C++项目编译时内存不足解决方案

    C/C++项目编译时内存不足,通过增加交换分区解决,交换分区一般会设置成内存的2倍,具体如下: 1.使用交换分区 #count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*c ...

  9. GDAL2.1.1库在Ubuntu14.04下编译时遇到的问题处理方法

    不用作任何调整,直接在Linux下编译GDAL2.1.1源码的步骤是: $ ./configure $ make $ make install 非常简单, 这样也能正常生成gdal动态库.静态库,如果 ...

最新文章

  1. mysql 代替不明_mysql不明原因停止后不能启动,请高手分析
  2. pdo mysql bindparam_pdo连接mysql prepare,bindParam插入数据
  3. 石川es6课程---18、ES6 复习
  4. 美国政府签署网络安全行政令 将全面加强网络安全建设
  5. vue 仿二手交易app_项目vue2.0仿外卖APP(七)
  6. 执行pip安装的程序:command not found
  7. Python——装饰器的学习笔记(legacy)
  8. 解决办法:C代码中明明有,为什么编译时提示未定义的引用
  9. android viewpager监听,viewPager的OnPageChangeListener监听器的方法调用顺序
  10. ajax上传图片 java_Java+ajax+图片上传
  11. 硅谷真假u盘测试软件,硅谷硅谷真假u盘测试
  12. 关于html的表情包,HTML那些可愛的“表情包”
  13. 2021年芒种是几月几号?芒种如何养生?
  14. java免费浏览器,Java swing实现简单的浏览器源码免费分享
  15. 【高通SDM660平台 Android 10.0】(21) --- 高通Camera persist使用手册
  16. xxl-job配置发邮件 spring.mail的QQ邮箱配置
  17. 移动端GPGPU 架构
  18. 【Java】3分钟学会Java中基本数据类型(建议收藏)
  19. 用EasyX图形库编写动态彩色万花尺程序(c语言)
  20. vue学习一(利用npm搭建Vue工程项目流程)

热门文章

  1. python3 自定义排序_Python3中的自定义排序
  2. vue3.0 抽奖 小功能
  3. python中函数的名称可以随意命名吗_函数的名称可以随意命名。(3.0分)_学小易找答案...
  4. java三色球问题_2020100期专业玩彩双色球走势分析
  5. linux cpu监控方案,Linux性能优化和监控系列(二)分析CPU性能
  6. Windows2012服务器无法复制粘贴问题
  7. linux执行定时,linux定时执行 - 乄珍惜
  8. Oracle 外部表加载监听日志,使用外部表访问监听日志
  9. 用typescript完成倒计时_「2019 JSConf.Hawaii - Brie.Bunge」大规模应用 TypeScript
  10. fatfs 文件属性_FATFS文件系统剖析(全).