2017-04-15 1 views
1

간단한 C++ 프로젝트에 MQTT-C-Client-Library을 포함하려고합니다. 나는이 #include "MQTTClient.h"과 같이 성공적으로 헤더 파일을 포함 시켰습니다. 리눅스 터미널에서 컴파일하면이 오류를 인쇄했다 :이 질문을 바탕으로 Example MQTT Client Code not working CC++ 프로젝트에서 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 

은 내가 어떤 인터넷 검색 후 라이브러리를 링크 할 필요가 있다고 생각 : 잘 컴파일하지만 실행 때 여전히 오류가 발생

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

최고에 라이브러리의 위치를 ​​추가 할 수 있습니다 - 다만 라이브러리를 사용하여 첫 번째 테스트 메시지를 게시 :) –

관련 문제