mosquitto编译方式分为两种:cmake和make。windows、Mac平台使用cmake编译方式,其他平台,包括linux平台,直接使用make进行编译。windows7下编译mosquitto详细介绍了windows7环境下编译mosquitto的步骤。
本文所介绍的内容是关使用于某种ARM平台下的mosquitto的编译步骤。
编译环境
- 宿主机:Ubuntu 16.04
- Host: ARM,Cortex-A55
- 交叉编译器:aarch64-linux-gnu-gcc, 7.2.1 20171011 (Linaro GCC 7.2-2017.11)
编译步骤
mosquitto官方下载最新的mosquitto源码包,本次编译的宿主机是Ubuntu系统,直接使用mosquitto提供的makefile进行编译。编译环境依赖如下:
- cJSON:为了客户端可以输出cJSON格式的内容,默认打开,通过make WITH_CJSON=no,关闭依赖;
- openssl:为mosquitto提供ssl支持,默认打开,通过make WITH_TLS=no,关闭依赖;
- pthreads:为mosquitto提供多线程支持,由于编译环境为linux系统,所以默认支持pthreads API环境。
准备
OpenSSL
openssl的交叉编译步骤可以参考,交叉编译OpenSSL。
cJSON
- 下载最新的cJSON源码,解压源码。
mkdir build cmake -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ make make install
编译
解压mosquitto源码包,执行如下命令编译:
make CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ CFLAGS="-I /path/to/openssl/install/include -I /path/to/cJson/install/include" LDFLAGS="-L /path/to/openssl/install/lib64 -L /path/to/cJson/install/lib -lssl -lcrypto -lcjson"
- CC和CXX用于指定,目标平台的gcc和g++编译器;
- CFLAGS:用于指定,openssl和cjson头文件安装目录;
- LDFLAGS:用于指定,openssl和cjson动态库安装目录;
编译完成之后,执行make install 进行安装。
测试
- 将cJSON、openssl、mosquitto动态库拷贝到目标系统;
- 设置LD_LIBRARY_PATH指定上述三类动态库在目标系统上的安装位置;
- 将mosquitto_ctrl mosquitto_passwd mosquitto_pub mosquitto_rr mosquitto_sub测试工具拷贝到目标系统;
- 这里以mosquitto_sub为例,测试一下mosquitto订阅功能,示例如下:
mosquitto_sub -h host_addr -p port -u username -P passwd -t the_topic_sub
- -h:指定mqtt broker的服务器地址;
- -p:指定mqtt broker的服务器端口号;
- -u:指定mqtt broker的服务器登录用户名;
- -P:指定mqtt broker的服务器登录密码;
- -t: 指定本地订阅的主题。
|