参考这里
下载paho.mqtt.embedded-c-master
一、首先编译MQTT协议包封装库:
解压paho.mqtt.embedded-c-master.zip之后,进入目录,
修改Makefile:
1、修改第70行CC ?=gcc为:
CC ?=arm-linux-gcc
2、第43行SOURCE_FILES_C = $(srcdir)/*.c改为:
SOURCE_FILES_C = $(wildcard $(srcdir)/*.c )
OBJS =
(
a
d
d
s
u
f
f
i
x
.
o
,
(addsuffix .o,
(addsuffix.o,(basename $(SOURCE_FILES_C)))
这个是把那个目录下的所有.c文件都编译进去,不然,后面引用这个库的时候会出错。
3、第95行rm -rf ${blddir}/* 改为:
rm -rf ${blddir}/* $(OBJS) ${srcdir}/../samples/transport.o
4、第110行
${EMBED_MQTTLIB_C_TARGET}: ${SOURCE_FILES_C} ${HEADERS_C}
改为
${EMBED_MQTTLIB_C_TARGET}: $(OBJS) ${HEADERS_C}
第111行
${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_C} ${LDFLAGS_C}
改为:
${CC} ${CCFLAGS_SO} -o $@ $(OBJS) ${LDFLAGS_C}
这是把所有的.o文件都链接到动态库中。
不然,后面引用动态库的时候会报错误说缺少相关引用。
注意前面都有个tab键符
5、在121行nstall: build 下面添加:
-mkdir -p $(DESTDIR)${libdir}
-mkdir -p $(DESTDIR)${includedir}
cp -r $(HEADERS) $(DESTDIR)${includedir}
这是创建安装目录、复制头文件。
6、
make
make install DESTDIR=/usr/local/arm/paho.mqtt.embedded-c prefix=