網(wǎng)絡(luò)轉(zhuǎn)載,侵權(quán)請(qǐng)聯(lián)系刪除
一、交叉編譯OpenSSL
tar -xvf 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-
參數(shù)解析:
no-asm :Donotuseassembler code
shared: 編譯連接成動(dòng)態(tài)庫(kù)
--prefix=$PWD/install : 指定編譯后安裝路徑
--cross-compile-prefix=arm-none-linux-gnueabi- : 指定交叉編譯工具鏈
具體信息請(qǐng)參看工程目錄下INSTALL文檔和config的幫助
修改Makefile,找到Makefile中的所有-m64的地方,然后刪除(應(yīng)該只有兩處地方)。
make
make install
cd install
ls
可以看到目錄下:bin include lib ssl
壓縮,放到開(kāi)發(fā)板 /目錄下
這是一個(gè)MQTT的客戶(hù)端開(kāi)源庫(kù),當(dāng)然有其他語(yǔ)言的庫(kù)抹竹,下面是對(duì)比情況:
本來(lái)是要在嵌入式環(huán)境下面用线罕,但是發(fā)現(xiàn)嵌入式版本,很多特性都不支持柒莉,直接用C版本是不是會(huì)好一點(diǎn)闻坚,雖然缺少websocket的支持。
因?yàn)檫@個(gè)有OpenSSL庫(kù)的依賴(lài)兢孝,所以先要交叉編譯OpenSSL窿凤。
unzip paho.mqtt.c-master
cd paho.mqtt.c-master
修改Makefile。在129行添加openssl的鏈接目錄跨蟹,注意改成你自己的路徑雳殊。
...
CFLAGS += -I./../openssl-1.1.0g/install/include
LDFLAGS += -L./../openssl-1.1.0g/install/lib
...
修改完成之后,執(zhí)行如下命令:
make CC=arm-none-linux-gnueabi-gcc
這樣會(huì)在當(dāng)前目錄創(chuàng)建build目錄窗轩,進(jìn)入build目錄夯秃,你能看到output目錄和一個(gè)版本頭文件,進(jìn)入output,你能看到庫(kù)文件仓洼,examples和測(cè)試程序介陶。
頭文件去src目錄找。
為什么不執(zhí)行make install呢色建?要執(zhí)行make install還得修改Makefile文件哺呜,不然會(huì)出錯(cuò)的。才疏學(xué)淺箕戳,我還是本辦法手動(dòng)去拿這些庫(kù)和頭文件算了某残。
四個(gè)庫(kù)文件在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
放到開(kāi)發(fā)板/usr/lib目錄下