mqtt arm linux,成功移植MQTT-PAHO到嵌入式arm-linux

主要参考:

主要区别(cc = arm-linux-gnueabihf-gcc -fPIC)

1.修改第70行CC ?= gcc为:

CC = arm-linux-gnueabihf-gcc -fPIC

2.第43行SOURCE_FILES_C = $(srcdir)/*.c改为:

SOURCE_FILES_C = $(wildcard $(srcdir)/*.c)

OBJS = $(addsuffix .o,$(basename $(SOURCE_FILES_C)))

这两行是把那个目录下的所有.c文件都编译进去,不然,后面引用这个库的时候会出错

3.第95行rm -rf ${blddir}/* 改为:

rm -rf ${blddir}/* ${srcdir}/../samples/transport.o

4.第110行改为:

${EMBED_MQTTLIB_C_TARGET}: $(OBJS) ${HEADERS_C}

第111行改为:

${CC} ${CCFLAGS_SO} -o $@ $(OBJS) ${LDFLAGS_C}

这是把所有的.o文件都链接到动态库中。不然,后面引用动态库的时候会报错误说缺少相关引用。

5.在121行install: build下面添加:

-mkdir -p $(DESTDIR)${libdir}

-mkdir -p $(DESTDIR)${includedir}

cp -r $(HEADERS) $(DESTDIR)${includedir}

这是创建安装目录、复制头文件。

6.make

340a4201478a

make输出

7.make install执行如下指令:

make install DESTDIR=/home/paho.mqtt.embedded-c-master prefix=

这里指定prefix(前缀)为空,不然安装的时候,会在我们指定的目录后加入usr/local这个子路径。

就安装到了主机的/home/paho.mqtt.embedded-c-master目录下了,这个目录下会多出两个子目录:

1)、include,这个在我们编译自己的程序的时候需要用到;

2)、lib子目录,这个是我们编译自己的程序需要链接的一个动态库文件[libpaho-embed-mqtt3c.so.1.0],后期应用时把它复制到arm板根文件系统的/usr/lib中。如果复制了还是报错,找不到libpaho-embed-mqtt3c.so.1.0的话,将工程根目录下的paho.mqtt.embedded-c/build/output目录下的三个so文件全部移植到arm板根文件系统的/usr/lib中,再把paho.mqtt.embedded-c/lib/libpaho-embed-mqtt3c.so.1.0复制过去

8.针对自己的工程文件(abc.c) 输出可执行文件(ABC)使用命令:

arm-linux-gnueabihf-gcc -fPIC -g -o ABC abc.c -lpaho-embed-mqtt3c -I MQTTPacket/src -L build/output

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值