在 CMake C\C++ 项目中使用 Git 仓库版本号
为了便于自动化版本管理,在C\C++项目中通常会考虑使用 Git 标识的版本作为程序版本号,本文介绍如何在 CMake 构建的项目中加入此项功能支持。
为了便于自动化版本管理,在C\C++项目中通常会考虑使用 Git 标识的版本作为程序版本号,本文介绍如何在 CMake 构建的项目中加入此项功能支持。
适用于桌面以及嵌入式 Linux 环境脚本编程。
做嵌入式 Linux 开发时候都需要使用交叉编译工具,这些一般是方案厂商提供,但我们通常也可以使用那些打包好的通用交叉编译工具,比如 Debian 上 apt 也有打包好的 arm 交叉编译工具: gcc-arm-linux-gnueabi
和 gcc-arm-linux-gnueabihf
,对应 c++ 版本以 g++ 开头,这两类主要区别在于 CPU 对于浮点的处理上,涉及到 armel
和 armhf
架构的区别,详情参照这里,你只需要选择对应开发板的架构工具即可。
由于是 Debian 自己维护更新的包,上述的两个交叉编译工具通常都会更新比较频繁,会支持最新的标准和特性,但是我们的开发板上系统通常都不是最新的,所以在使用时需要注意,否则会出现编译后的程序无法在开发板上运行。
最近在将 mruby 应用到嵌入式环境时就遇到这个问题。
在 C\C++ 项目中,通常会有不止一个可执行程序,或者需要将一些调用封装成动态或静态库,来实现项目的模块化,本文就讲解一种支持这种项目布局的方法。
CMake 支持子目录构建(add_subdirectory
指令),本文介绍的布局方法就是基于这个功能来实现。
通常来说,使用 shell 脚本时候不需要太顾及程序的效率性,能完成任务,只要不是太慢,都可以接受。
但在一些特定应用场合,脚本效率也是一个硬性限制,不能耗时太久,比如说,用 shell 来编写一些处理 HTTP 请求的 CGI 程序,脚本的执行效率直接影响了 HTTP 的响应速度。
在 shell 中分割字符串有多种方法,比如利用 awk、cut 工具,还有内置方法,虽然效果相同,但是执行效率差距较大,尤其在处理大数据量上更是显著。
Yocto Project 是一个开源的协作软件,提供模板、工具和方法帮你创建定制的 Linux 系统和嵌入式产品,而无需关心硬件体系。适合嵌入式Linux开发人员使用。
下面来以 Freescale 的 i.MX6UL 开发板为例,详细叙述如何搭建 Yocto 环境以及 Linux 镜像的定制编译和烧录。
Windows 上的蓝牙编程并不方便,由于操作系统并没有提供统一的蓝牙操作接口,通常是由各个蓝牙设备商提供蓝牙栈,所以要想编程兼容这些不同的厂商蓝牙是一个问题。好在有个软件项目 32feet.NET 针对主流蓝牙协议栈提供了支持,包括 Microsfot, Widcomm, BlueSolei 等,同时还支持红外传输协议。
蓝牙虚拟串口是一个较为常见的需求,为了兼容已有使用串口设备的程序,需要将蓝牙连接转为系统上的虚拟串口,然后提供给其他程序或库使用。32feet.NET 对此也提供了支持。