下载源码
官网
下载最OpenSSL V1.1.0
交叉编译
tar zxvf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g/
./config no-asm shared --prefix=$PWD/install --cross-compile-prefix=arm-none-linux-gnueabi-
参数解析:
no-asm : Do not use assembler code
shared : 编译连接成动态库
--prefix=$PWD/install : 指定编译后安装路径
--cross-compile-prefix=arm-none-linux-gnueabi- : 指定交叉编译工具链
具体信息请参看工程目录下INSTALL文档和config的帮助
修改Makefile,找到Makefile中的所有-m64的地方,然后删除(应该只有两处地方)。
1. make
2. make install
查看编译生成的库
1. cd install
2. ls
可以看到目录下:bin
include
lib
share
ssl
交叉编译 MQTT paho.mqtt.c
这是一个MQTT的客户端开源库,当然有其他语言的库,下面是对比情况:
本来是要在嵌入式环境下面用,但是发现嵌入式版本,很多特性都不支持,直接用C版本是不是会好一点,虽然缺少websocket的支持。
下载
交叉编译
因为这个有OpenSSL库的依赖,所以先要交叉编译OpenSSL。
1. unzip paho.mqtt.c-master
2. cd paho.mqtt.c-master
修改Makefile。在129行添加openssl的链接目录,注意改成你自己的路径。
1. ...
2. CFLAGS += -I./../openssl-1.0.2s/install/include
3. LDFLAGS += -L./../openssl-1.0.2s/install/lib
4. ...
修改完成之后,执行如下命令:
make CC=arm-oe-linux-gnueabi-gcc
(不过我执行过程中出现错误,找不到头文件等,可是我执行make不加参数反而可以,我也不知道为什么)
make
(上面执行出错执行make,注意观察log是否和自己的交叉编译工具同步)
这样会在当前目录创建build目录,进入build目录,你能看到output目录和一个版本头文件,进入output,你能看到库文件,examples和测试程序。
头文件去src目录找。
为什么不执行make install呢?要执行make install还得修改Makefile文件,不然会出错的。才疏学浅,我还是本办法手动去拿这些库和头文件算了。
四个库文件在README里面有介绍:
The Paho C client comprises four shared libraries:
* libmqttv3a.so - asynchronous
* libmqttv3as.so - asynchronous with SSL
* libmqttv3c.so - “classic” / synchronous
* libmqttv3cs.so - “classic” / synchronous with SSL
参考链接