交叉编译 LCM 库
LCM (Lightweight Communications and Marshalling)是一个 基于 UDP 网络的消息传递库,适合高带宽和低延迟的通信需求,模式为发布/订阅。
本文讲述如何交叉编译 LCM 库到 arm linux上。
LCM (Lightweight Communications and Marshalling)是一个 基于 UDP 网络的消息传递库,适合高带宽和低延迟的通信需求,模式为发布/订阅。
本文讲述如何交叉编译 LCM 库到 arm linux上。
NNG/nanomsg 是最近项目上使用到的一个通信库,用来实现进程间过程调用和线程间通信,很是方便。
NNG 是 nanomsg 的继任版本,而 nanomsg 则是流行的 ZMQ 的 C 重写版。
本文给出一个 Python tkinter GUI 程序中调用 shell 脚本的代码示例,在 GUI 的一个文本框中会不断输出脚本的标准输出和标准错误且不会阻塞 GUI 窗体事件响应,同时也会在脚本执行完毕后根据状态(exit code)弹出提示框,如果在脚本运行中关闭窗口,会弹出提示并中断脚本的执行。
这个样例很适合编写一些提供给非技术人员使用的小工具。
为了便于自动化版本管理,在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
指令),本文介绍的布局方法就是基于这个功能来实现。