我正在尝试在我的树莓派上运行 C 语言的 Paho MQTT 示例: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/
我的 makefile 如下所示:
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
当我尝试构建时,gcc 找不到该库:
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
我在 src
中有 main.c(mqtt 示例文件),并将所有 MQTT 头文件放在 include
中。
mqtt 的库文件位于:/home/pi/mqtt_C_testing/Eclipse-Paho-MQTT-C-1.3.1-Linux/lib
我真的不确定我是否走对了路,所以非常感谢您的帮助。谢谢!
最佳答案
为了编译它,我执行了以下操作:
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
运行的 makefile。我对这一切都是菜鸟,但我发现这个网站( http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/ )确实对创建 makefile 有帮助。不过,我还没有真正成功地将 .h 文件放入自己的包含目录中。
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)
关于c - 尝试在 Raspberry Pi 上编译 Paho MQTT C 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59852380/