1. 下載MQTT的代碼paho.mqtt.c,https://github.com/eclipse/paho.mqtt.c,咱是從gitHUB上下載的,也可以直接在ubuntu上面,用git clone https://github.com/eclipse/paho.mqtt.c.git 下載
2. 下載完成后,看下代碼結構
3. 編譯問題,這套代碼需要用到SSL,當然不用也是可以的,就是需要修改根目錄下的Makefile,比較麻煩,反正我是修改了Makefile,可以不用SSL的。CC等於交叉編譯工具鏈的目錄,在根目錄下執行
make CC=/home/qhq/openert_mt7621/toolchain_mipsel_24kc_gcc_8.3/bin/mipsel-openwrt-linux-gcc
就可以開始編譯了,中途可能會提示錯誤,STAGING_DIR沒定義,自己去export一下
export STAGING_DIR=/home/qhq/openert_mt7621/toolchain_mipsel_24kc_gcc_8.3/bin:$STAGING_DIR
4. 其中編譯的時候出現問題
error: expected declaration specifiers or '...' before numeric constant void free(void *);
需要修改根目錄下的Makefile文件,去掉-D_GNU_SOURCE
基本就可以編譯過去了。其他問題可能是SSL的問題了,由於我修改Makefile去掉SSL,所以跳過SSL的問題。
5. 編譯完成后,成功的話會生成built文件,里面的.so就是庫文件
當時比較好奇,.so 和 .so.1 ,.so.1.3什么關系,解釋如下,說白了,其中一個是庫,另外兩個是快捷方式(軟鏈接),都指向這個庫,可能有些系統喜歡.so。有些喜歡。so.1,口味不同。反正我都是3個都拷貝到我的MT7621的 /usr/lib ,以防萬一
接下來把我的應用代碼,也拷貝到MT7621里面,執行一下
平台上收到咱的數據