2017-04-15 3 views
1

Ich versuche, die MQTT-C-Client-Library in einem einfachen C++ Projekt einzuschließen. Ich habe die Header-Datei erfolgreich wie folgt eingefügt #include "MQTTClient.h". Kompilieren es in der Linux-Terminal wurde Drucken dieser Fehler:Verlinkung Paho C Mqtt Bibliothek Fehler in C++ Projekt

[[email protected] 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 

Ich fand heraus, dass ich die Bibliothek nach einiger googeln verknüpfen: Example MQTT Client Code not working C

Auf der Grundlage dieser Frage und Antwort Ich versuchte es noch einmal, wie diese Zusammenstellung :

sudo g++ -L/home/xy/Desktop/paho.mqtt.c/build/output/ *.cpp -l paho-mqtt3c -o MQTTTest

Welche fein kompiliert aber wenn ich noch einen Fehler läuft. Konsolenbefehle und Ausgabe:

[[email protected] mosquittoProject]$ sudo g++ -L/home/xy/Desktop/paho.mqtt.c/build/output/ *.cpp -l paho-mqtt3c -o MQTTTest 
[[email protected] mosquittoProject]$ ./MQTTTest 
./MQTTTest: error while loading shared libraries: libpaho-mqtt3c.so.1: cannot open shared object file: No such file or directory 

ersetzt I den tatsächlichen Benutzernamen durch xy in diesem Beitrag.

Was mache ich hier falsch?

Antwort

2

Das Problem sieht aus wie die Bibliothek (libpaho-mqtt3c.so.1) nicht auf dem Bibliothekspfad ist.

Es sieht so aus, als ob Sie eine Verknüpfung mit dem Build-Speicherort der Bibliothek herstellen und ihn nicht im Standardverzeichnis (z. B./usr/local/lib) installiert haben, indem Sie sudo make install ausführen.

Standardmäßig durchsucht der Runtime-Linker die unter /etc/ld.so.conf und /etc/ld.so.conf.d aufgelisteten Speicherorte. Wenn Sie diese bearbeiten, denken Sie daran, sudo ldconfig auszuführen, um den Cache zu aktualisieren.

Sie können die Position der Bibliothek in die Umgebungsvariable LD_LIBRARY_PATH hinzufügen z.B .:

$ LD_LIBRARY_PATH=/home/xy/Desktop/paho.mqtt.c/build/output/ ./MQTTTest 
+0

genial - nur die erste Testnachricht mit der Bibliothek veröffentlicht :) –

Verwandte Themen