2017-04-15 68 views
1

私は単純なC++プロジェクトにMQTT-C-Client-Libraryを含めることを試みています。 私はこのようなヘッダファイルを含めて、#include "MQTTClient.h"のように成功しました。 Linuxターミナルでそれをコンパイルすると、このエラーを印刷したC++プロジェクトでのPaho C Mqttライブラリエラーのリンク

[[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 

は、私はいくつかのグーグル後にライブラリをリンクする必要があることを考え出した:私はこのようにそれを再度コンパイルしてみました、この質問と回答をもとにExample MQTT Client Code not working C

:罰金コンパイルするが、実行しているとき、私はまだエラーを取得

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

。 コンソールコマンドと出力:

[[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 

は、私がこの記事でXYによる実際のユーザ名を置き換えます。

私はここで間違っていますか?

答えて

2

ライブラリパス(libpaho-mqtt3c.so.1)がライブラリパスにないように見えます。

sudo make installを実行すると、ライブラリのビルド先とリンクしていて、デフォルトのシステムの場所(例:/ usr/local/lib)にインストールしていないようです。

デフォルトでは、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 
+0

素晴らしいにライブラリの場所を追加することができます - ちょうどライブラリを使用して最初のテストメッセージを公表:) –

関連する問題