栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

linux im6q交叉编译paho.mqtt.c

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux im6q交叉编译paho.mqtt.c

工具链问题

本来编译一下paho应该是没大问题的,反倒是cortexa9hf-vfp-neon-poky-linux-gnueabi这个工具链使用上出问题了
从开发板开发那边拿到的或者直接从nxp社区下载的sdk,使用上是source一下environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi,export一下路径到env上,这个好理解。
但是当去编译的时候直接调用例如

arm-poky-linux-gnueabi-gcc -o hello hello.c

会直接报错stdio.h找不到
hello.c:1:19: fatal error: stdio.h: No such file or directory
compilation terminated.

这就说明工具链的配置有问题,回头再去看一下environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi里面,注意其中两行

export SDKTARGETSYSROOT=/opt/fsl-imx-x11/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
export CC="arm-poky-linux-gnueabi-gcc  -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=$SDKTARGETSYSROOT"

只看sysroot的话就好理解了,调用arm-poky-linux-gnueabi-gcc的时候用sysroot给进了环境路径
那么再看上面hello.c的例子,只要这样就能编译了

$CC -o hello hello.c
openssl交叉编译

理解工具链问题之后,再进行编译就容易多了,paho.mqtt支持tls,所以如果需要tls的话就得先编译openssl

源代码下载

openssl官网 https://www.openssl.org/source/

编译

prefix写你放置生成文件的目录

cd openssl-1.0.2h
./config no-asm shared --prefix=/home/dd/Desktop/openssl/openssl-1.0.2h/imx6_install

然后打开生成的Makefile,删除所有-m64
注意下CC=那一行,CROSS_COMPILE已经写了arm-poky-linux-gnueabi-,CC里面可能又重复写了,改成这样

CC= $(CROSS_COMPILE)gcc  -march=armv7-a -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/opt/fsl-imx-x11/4.1.15-1.2.0/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi

然后make && make install

paho.mqtt.c交叉编译 git下载源代码
git clone https://github.com/eclipse/paho.mqtt.c.git
创建目录
cd paho.mqtt.c
mkdir imx6_build
cd imx6_build
生成环境

有些贴写用CMAKE_C_COMPILER来指定编译器,这个工具链下有CC,cmake会读取CC,加了反而又会带来路径找不到的问题
然后看需不需要tls,通过PAHO_WITH_SSL指定
如果是PAHO_WITH_SSL=TRUE的话,需要再指定OPENSSL_ROOT_DIR到编译好的openssl的install目录

//不开启TLS
cmake ../ -DPAHO_WITH_SSL=FALSE -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_INSTALL_PREFIX=/home/dd/Desktop/mqtt/paho.mqtt.c/imx6_build/install
//开启TLS
cmake ../ -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR=/home/dd/Desktop/openssl/openssl-1.0.2h/imx6_install -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_INSTALL_PREFIX=/home/dd/Desktop/mqtt/paho.mqtt.c/imx6_build/install
make && make install

完成编译

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025885.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号