1. 准备工作
1.1. 下载源码
两种方式下载源码:
- git clone
- 直接下载指定 tag 源码
对于第 1 种方式,会把历史 commit 都 clone 下来,对于立项久远、社区活跃的项目来说,体积较大,加之 github 在国内访问不稳定,而且只是使用不是开发,所以这里选择第 2 种方式。
在其项目 Release 页找到最新的 Release Tag,下载 Source code
。
1.2. 安装依赖
|
|
如果需要使用 SSL 功能,则还需要预先交叉编译 OpenSSL,可参考之前的文章 移植 OpenSSL。
如果需要生成文档,还需要安装 doxygen
和 graphhviz
:
|
|
2. 配置 Makefile
2.1. 修改交叉编译工具链
新建一个目录作为编译用目录,拷贝 paho.mqtt 源码目录下 cmake 目录内的 toolchain.linux-arm11.cmake 至编译用目录,修改以下内容为自己的交叉编译工具链:
|
|
2.2. 生成 Makefile
|
|
参数 | 默认值 | 描述 |
---|---|---|
PAHO_BUILD_SHARED | TRUE | 编译成共享库 |
PAHO_BUILD_STATIC | FALSE | 编译成静态库 |
PAHO_HIGH_PERFORMANCE | FALSE | 高性能模式,如果设为 TRUE 则编译时 debug 追踪等功能将会被排除 |
PAHO_WITH_SSL | FALSE | 开启 SSL 功能 |
OPENSSL_ROOT_DIR | “” | OpenSSL 安装目录 |
PAHO_BUILD_DOCUMENTATION | FALSE | 生成文档 |
PAHO_BUILD_SAMPLES | FALSE | 编译示例 |
如果 OPENSSL_ROOT_DIR 目录内含有共享库,那么编译完成的 paho.mqtt 共享库需要依赖 OpenSSL 的共享库。
3. 编译
|
|
如果遇到 ld: cannot find -lanl
的错误,则需要在源码目录下,找到 src/CMakeLists.txt
,将其中的以下内容注释(使用 # 注释):
|
|
然后重新生成一次 Makefile。原因是 libanl
只支持 glibc
。
3.1. 打包(可选)
|
|