LV07-01-zlib-移植
本文主要是zlib库的移植相关笔记。若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows版本 | windows11 |
Ubuntu版本 | Ubuntu16.04的64位版本 |
VMware® Workstation 16 Pro | 16.2.3 build-19376536 |
终端软件 | MobaXterm(Professional Edition v23.0 Build 5042 (license)) |
Linux开发板 | 正点原子 i.MX6ULL Linux 阿尔法开发板 |
uboot | NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03) |
linux内核 | linux-4.15(NXP官方提供) |
Win32DiskImager | Win32DiskImager v1.0 |
buildroot | 2023.05.1版本 |
点击查看本文参考资料
分类 | 网址 | 说明 |
官方网站 | https://www.arm.com/ | ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档 |
https://www.nxp.com.cn/ | NXP官方网站 | |
https://www.nxpic.org.cn/ | NXP 官方社区 | |
https://u-boot.readthedocs.io/en/latest/ | u-boot官网 | |
https://www.kernel.org/ | linux内核官网 |
点击查看相关文件下载
分类 | 网址 | 说明 |
NXP | https://github.com/nxp-imx | NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库 |
https://elixir.bootlin.com/linux/latest/source | 在线阅读linux kernel源码 | |
nxp-imx/linux-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga | NXP linux内核仓库tags中的rel_imx_4.1.15_2.1.0_ga | |
nxp-imx/uboot-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga | NXP u-boot仓库tags中的rel_imx_4.1.15_2.1.0_ga | |
I.MX6ULL | i.MX 6ULL Applications Processors for Industrial Products | I.MX6ULL 芯片手册(datasheet,可以在线查看) |
i.MX 6ULL Applications ProcessorReference Manual | I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网) |
一、zlib库简介
1. 这是什么库?
zlib 是通用的压缩库,提供了一套 in-memory 压缩和解压函数,并能检测解压出来的数据的完整性(integrity)。zlib 也支持读写 gzip (.gz) 格式的文件。
2. 官网在哪
官网在这里:zlib Home Site,打开后如下:
可以看到最新版本为1.2.13。
3. 源码下载
我们可以在这里下载源码,也就是主页往下翻就能找到:
这里我就直接下载最新版本,然后解压后有如下文件和目录:
二、移植zlib库
1. 编译源码
我们首先进入刚才解压的源码目录:
1 | cd ~/5ALPHA/zlib-1.2.13/ |
然后执行以下命令:
1 | mkdir -p ~/5ALPHA/zlib-1.2.13/zlib_output # 创建目录存放编译生成的文件 |
这个一般没什么坑,安装完毕后我们可以在zlib_output目录中看到以下文件:
我们将 lib 目录下的 zlib 库文件拷贝到开发板根文件系统的 /lib 目录下,命令为:
1 | sudo cp -rfa ~/5ALPHA/zlib-1.2.13/zlib_output/lib/* /home/hk/4nfs/buildroot/lib |
2. 测试库是否可用
我们编写一个测试文件
1 |
|
然后在ubuntu中使用交叉编译工具链编译:
1 | rm-linux-gnueabihf-gcc zlib_test.c -o zlib_test -Wall -lz -L ~/5ALPHA/zlib-1.2.13/zlib_output/lib -I ~/5ALPHA/zlib-1.2.13/zlib_output/include/ |
编译完成后,我们将它拷贝到根文件系统中,然后有以下打印说明移植的库可用:
不清楚为什么压缩一下还变大了,不过不重要,我们主要是验证库是否可以用