網(wǎng)絡轉(zhuǎn)載,侵權(quán)請聯(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: 編譯連接成動態(tài)庫
--prefix=$PWD/install : 指定編譯后安裝路徑
--cross-compile-prefix=arm-none-linux-gnueabi- : 指定交叉編譯工具鏈
具體信息請參看工程目錄下INSTALL文檔和config的幫助
修改Makefile,找到Makefile中的所有-m64的地方,然后刪除(應該只有兩處地方)。
make
make install
cd install
ls
可以看到目錄下:bin include lib ssl
壓縮,放到開發(fā)板 /目錄下
這是一個MQTT的客戶端開源庫,當然有其他語言的庫,下面是對比情況:
本來是要在嵌入式環(huán)境下面用,但是發(fā)現(xiàn)嵌入式版本,很多特性都不支持,直接用C版本是不是會好一點,雖然缺少websocket的支持。
因為這個有OpenSSL庫的依賴,所以先要交叉編譯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
這樣會在當前目錄創(chuàng)建build目錄,進入build目錄,你能看到output目錄和一個版本頭文件,進入output,你能看到庫文件,examples和測試程序。
頭文件去src目錄找。
為什么不執(zhí)行make install呢?要執(zhí)行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
放到開發(fā)板/usr/lib目錄下