Связывание ошибки библиотеки Paho C Mqtt в проекте C ++

Я пытаюсь включить MQTT-C-Клиент-библиотека в простом проекте 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

Я понял, что мне нужно связать библиотеку после некоторого поиска в Google: Пример клиентского кода MQTT не работает 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

Я заменил реальное имя пользователя на ху в этом посте.

Что я здесь не так делаю?

2

Решение

Проблема выглядит так, как будто библиотека (libpaho-mqtt3c.so.1) не находится на пути к библиотеке.

Похоже, что вы ссылаетесь на место сборки библиотеки и не установили ее в системное местоположение по умолчанию (например, / usr / local / lib), запустив sudo make install,

По умолчанию в Linux компоновщик времени выполнения ищет местоположения, перечисленные в /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
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]