【小龙分享】解决PSDK交叉编译找不到zconf.h问题
2
本文目录
环境
└─ PSDK版本
└─ 相关软件/固件版本
└─ 测试环境
技巧详解
└─ 1.问题分析
└─ 2.解决思路
└─ 3.下载zlib源码-交叉编译
└─ 4.附件
环境- PSDK版本:
- Payload SDK V2.0.0-build.138
- 相关软件/固件版本:
- X-Port: V01.00.0000
- Skyport V2 Adapter: V01.00.0000
- Matrice 200 V2 Series: V01.00.0650
- GL900A Remote Controller: V01.00.0650
- iOS MSDK : V4.12_m300rtk.b1
- Android MSDK: V4.12_m300rtk.b1
- DJI Pilot: V1.7.0
- DJI Assistant 2 For Matrice: V2.0.11
- 测试环境:
- arm v7/v8架构的linux开发板
- x86_64架构的ubutnu16.04主机
技巧详解
1.问题分析
在PSDK的源码中包含了zconf.h的头文件,zconf.h 属于zlib,该库是提供数据压缩用的函式库,使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。由于该函数库并不是GNU GCC标准函数库,因此在其编译工具链不包含该库,如果对PSDK的linux平台进行移植和交叉编译时会就遇到找不 zconf.h问题。
2.解决思路
思路一:直接屏蔽。该方法简单粗暴,直接注释报错的位置,PSDK 2.0 应该就两个位置,再编译即可成功。当然这个方法不是很推荐,因为后续可能会用到库的API。
思路二:找现成的lib库。从开发板/IC厂家提供的资料包获取lib库(如果有),或者网上找别人已经编译好的lib库,当然需要与你的开发板架构/编译工具链相匹配。(本文也有附赠,如附件提供的arm v7)
思路三:下载zlib源码自己编译。此函数库为自由软件,使用zlib授权,可以到zlib官网 http://www.zlib.net/ 下载源码进行编译/交叉编译(本文附件也有提供)。
3.下载zlib源码-交叉编译
1. 下载 zlib-1.2.11.tar.gz (截止发稿前的最新版本) 到gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/usr/下,gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi是你开发平台所使用的交叉编译工具链,不同平台名称会不一样。
2. cd zlib-1.2.11/
3. ./configure --prefix=../
4. vim Makefile
zlib库提供的configure配置不支持配置编译器,因此需要手动更改Makefile,修改内容如下:
4-1 这里我们只需要编译静态库,因此将 all: static shared all64 改为 all: static # shared all64 (类似./configure --static)
4-2 修改编译器:静态库没有用到CPP和LDSHARED功能,因此只要修改CC,如下:
CC=gcc 改为 CC=/opt/toolchain/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
4-3 接着,修改库生成命令(ar),如下:
AR=ar 改为 AR=/opt/toolchain/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-ar
4-4 最后,生成库之后要更新库文件符号索引表,修改ranlib:
RANLIB=ranlib 改为 RANLIB=/opt/toolchain/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-ranlib
5. make all 6. make instal 确认是否成功生成lib库的头文件, find../ -name "zconf.h" 7. 将最后生成libz.a 以及 zlib.h zconf.h拷贝到所需目录下即可 cp libz.a ../lib cp zconf.h ../include/ 8. 最后可以将这个zlib包删除掉,编译PSDK代码包 cmake-DCMAKE_BUILD_TYPE=Release .. make
4.附件 附赠,zlib-1.2.11.tar.gz zlib源码。
zlib-1.2.11.tar.gz
(593.46 KB, 下载次数: 137)
附赠,zlib-1.2.11_cross-compilation.zip zlib交叉编译后的lib库和头文件,适用环境如上文。
zlib-1.2.11_cross-compilation.zip
(82.72 KB, 下载次数: 141)
此篇文章分享自张小龙,如果您有什么疑问或者建议欢迎回复讨论~ 欢迎点赞哦!
|
|
|
|
|