Попытка скомпилировать пример Paho MQTT C на Raspberry Pi - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь запустить пример Paho MQTT в C на моем Raspberry Pi: https://www.eclipse.org/paho/clients/c/

Я пытался просто загрузить готовые двоичные файлы и установить ссылку на lpaho-mqtt3c

Я поместил эту библиотеку здесь: /home/pi/mqtt_C_testing/Eclipse-Paho-MQTT-C-1.3.1-Linux/lib

И добавил: LD_LIBRARY_PATH=/home/pi/mqtt_C_testing/Eclipse-Paho-MQTT-C-1.3.1-Linux/lib/

Мой make-файл выглядит так:

IDIR = /home/pi/mqtt_C_testing/Eclipse-Paho-MQTT-C-1.3.1-Linux/include
LDIR = /home/pi/mqtt_C_testing/Eclipse-Paho-MQTT-C-1.3.1-Linux/lib
CC = gcc
LD = gcc
CFLAGS = -Wall
LIBS = -lpaho-mqtt3c

PROG_NAME = main

# directories in project
BIN = bin
SRC = src
OBJ = obj
INCLUDE = include

INCLUDES = -I./$(INCLUDE)

all : $(PROG_NAME)

$(PROG_NAME) : $(BIN)/$$@

$(BIN)/% : $(OBJ)/%.o
        $(CC) $(CFLAGS) $^ -o $@ $(LIBS)

$(BIN)/main : $(addprefix $(OBJ)/, \
        main.o)

$(OBJ)/main.o : $(addprefix $(INCLUDE)/, \
        MQTTProperties.h MQTTReasonCodes.h MQTTSubscribeOpts.h MQTTClient.h \
        MQTTClientPersistence.h MQTTAsync.h)

$(OBJ)/%.o : $(SRC)/%.c
        $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@

.PHONY: clean

clean:
        rm -f $(OBJ)/*.o

Когда я пытаюсь собрать, g cc не может найти библиотеку:

gcc -Wall obj/main.o -o bin/main -lpaho-mqtt3c
/usr/bin/ld: cannot find -lpaho-mqtt3c
collect2: error: ld returned 1 exit status
make: *** [makefile:26: bin/main] Error 1

Моя структура каталогов такая:

pi@raspberrypi:~/mqtt_C_testing $ ls
bin  Eclipse-Paho-MQTT-C-1.3.1-Linux  include  makefile  obj  src

И у меня есть main. c ( файл примера mqtt) в src и я поместил все заголовочные файлы MQTT в include.
Библиотечные файлы для mqtt находятся здесь: /home/pi/mqtt_C_testing/Eclipse-Paho-MQTT-C-1.3.1-Linux/lib

Я действительно не уверен, что я Я здесь правильный путь, поэтому любая помощь приветствуется. Спасибо!

1 Ответ

0 голосов
/ 22 января 2020

Чтобы это скомпилировать, я сделал следующее:

1) Я собрал библиотеку, клонировав репозиторий на github.com/eclipse/paho.mqtt.c и запустив make затем make install. Это помещает файлы .so в / usr / local / lib

2) Я помещаю все файлы .h в основную папку моего проекта: /home/pi/mqtt_C_testing/

3) Я вызвал синхронный пример paho mqtt main.c и он также находится в главном каталоге.

4) Затем я могу просто использовать: gcc -Wall -o test main.c -lpaho-mqtt3c для сборки и создания исполняемого файла с именем "test"

5) Мне также удалось написать make-файл, который запускается только с make. Я новичок во всем этом, но я обнаружил, что этот сайт (http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/) действительно помог в создании make-файла. У меня пока не получилось поместить файлы .h в их собственный каталог include.

CC = gcc
CFLAGS=-I.
DEPS = MQTTAsync.h MQTTClientPersistence.h MQTTProperties.h MQTTClient.h MQTTReasonCodes.h MQTTSub$
OBJ = main.o
LIBS= -lpaho-mqtt3c


%.o: %.c $(DEPS)
        $(CC) -c -o $@ $< $(CFLAGS)

mainmake: main.o
        $(CC) -o $@ $^ $(CFLAGS) $(LIBS)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...