在 C++ 项目中链接 Paho C Mqtt 库错误
Linking Paho C Mqtt library error in C++ Project
我正在尝试将 MQTT-C-Client-Library 包含在一个简单的 C++ 项目中。
我已经像这样成功地包含了头文件 #include "MQTTClient.h"
。在 linux 终端编译它会打印出这个错误:
[xy@localhost mosquittoProject]$ sudo g++ *.cpp -o MQTTTest
/tmp/ccHn3s6m.o: In function `main':
mosquitto_test.cpp:(.text+0x11e): undefined reference to `MQTTClient_create'
mosquitto_test.cpp:(.text+0x13f): undefined reference to `MQTTClient_connect'
collect2: error: ld returned 1 exit status
谷歌搜索后我发现我需要 link 图书馆:Example MQTT Client Code not working C
基于这个问题和答案,我尝试像这样再次编译它:
sudo g++ -L/home/xy/Desktop/paho.mqtt.c/build/output/ *.cpp -l paho-mqtt3c -o MQTTTest
编译正常,但是当 运行 时我仍然遇到错误。
控制台命令和输出:
[xy@localhost mosquittoProject]$ sudo g++ -L/home/xy/Desktop/paho.mqtt.c/build/output/ *.cpp -l paho-mqtt3c -o MQTTTest
[xy@localhost mosquittoProject]$ ./MQTTTest
./MQTTTest: error while loading shared libraries: libpaho-mqtt3c.so.1: cannot open shared object file: No such file or directory
我在 post.
中用 xy 替换了实际用户名
我做错了什么?
问题看起来是库 (libpaho-mqtt3c.so.1) 不在库路径上。
看起来您正在链接库的构建位置,并且没有通过 运行ning sudo make install
将其安装到默认系统位置(例如 /usr/local/lib)。
默认情况下,Linux 运行time 链接器搜索 /etc/ld.so.conf
和 /etc/ld.so.conf.d
中列出的位置。如果您编辑这些,请记住 运行 sudo ldconfig
更新缓存。
您可以将库的位置添加到 LD_LIBRARY_PATH 环境变量中,例如:
$ LD_LIBRARY_PATH=/home/xy/Desktop/paho.mqtt.c/build/output/ ./MQTTTest
我正在尝试将 MQTT-C-Client-Library 包含在一个简单的 C++ 项目中。
我已经像这样成功地包含了头文件 #include "MQTTClient.h"
。在 linux 终端编译它会打印出这个错误:
[xy@localhost mosquittoProject]$ sudo g++ *.cpp -o MQTTTest
/tmp/ccHn3s6m.o: In function `main':
mosquitto_test.cpp:(.text+0x11e): undefined reference to `MQTTClient_create'
mosquitto_test.cpp:(.text+0x13f): undefined reference to `MQTTClient_connect'
collect2: error: ld returned 1 exit status
谷歌搜索后我发现我需要 link 图书馆:Example MQTT Client Code not working C
基于这个问题和答案,我尝试像这样再次编译它:
sudo g++ -L/home/xy/Desktop/paho.mqtt.c/build/output/ *.cpp -l paho-mqtt3c -o MQTTTest
编译正常,但是当 运行 时我仍然遇到错误。 控制台命令和输出:
[xy@localhost mosquittoProject]$ sudo g++ -L/home/xy/Desktop/paho.mqtt.c/build/output/ *.cpp -l paho-mqtt3c -o MQTTTest
[xy@localhost mosquittoProject]$ ./MQTTTest
./MQTTTest: error while loading shared libraries: libpaho-mqtt3c.so.1: cannot open shared object file: No such file or directory
我在 post.
中用 xy 替换了实际用户名我做错了什么?
问题看起来是库 (libpaho-mqtt3c.so.1) 不在库路径上。
看起来您正在链接库的构建位置,并且没有通过 运行ning sudo make install
将其安装到默认系统位置(例如 /usr/local/lib)。
默认情况下,Linux 运行time 链接器搜索 /etc/ld.so.conf
和 /etc/ld.so.conf.d
中列出的位置。如果您编辑这些,请记住 运行 sudo ldconfig
更新缓存。
您可以将库的位置添加到 LD_LIBRARY_PATH 环境变量中,例如:
$ LD_LIBRARY_PATH=/home/xy/Desktop/paho.mqtt.c/build/output/ ./MQTTTest