v2x@ubuntu:~/Desktop/yancheng/mqttClient$ g++ test123.cpp -o 123.o
/tmp/ccJj8ZcW.o: In function `main':
test123.cpp:(.text+0x1ea): undefined reference to `MQTTClient_create'
test123.cpp:(.text+0x217): undefined reference to `MQTTClient_connect'
test123.cpp:(.text+0x2ac): undefined reference to `MQTTClient_publishMessage'
test123.cpp:(.text+0x2ee): undefined reference to `MQTTClient_waitForCompletion'
test123.cpp:(.text+0x32e): undefined reference to `MQTTClient_disconnect'
test123.cpp:(.text+0x33d): undefined reference to `MQTTClient_destroy'
collect2: error: ld returned 1 exit status 

使用 readelf -h filename.so可以查看库文件是什么架构的Machine

解决方案:

 https://www.jianshu.com/p/37f7ee7ead65

需要下载源码,然后编译出对应架构的库文件。

 

在ubuntu上安装MQTT

找到库文件后:

   libpaho-mqtt3as.so.zip(mqtt phao.c 的x86的库文件)这个当时找了好久也没找到。

我的博客下载处可以下载到 libpaho-mqtt3as.so.zip 这个压缩包。

如果是arm架构的设备需要编译出arm架构的库文件。网上也有可以下载的。

把x86的库文件放到指定的目录下
v2x@ubuntu:~/Desktop$ sudo cp ./libpaho-mqtt3as.so/libpaho-mqtt3as.so /usr/lib/
[sudo] password for v2x: 

v2x@ubuntu:~/Desktop$ sudo cp ./libpaho-mqtt3as.so/libpaho-mqtt3as.so.1 /usr/lib/
v2x@ubuntu:~/Desktop$ sudo cp ./libpaho-mqtt3as.so/libpaho-mqtt3as.so.1.0 /usr/lib/

 

编译命令:g++ subscribe.cpp -o subscribe.out -std=c++11 -lpaho-mqtt3as

 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐