交叉编译 zlib

交叉编译 zlib

概述

logo

zlib 被设计为一个免费的、通用的、不受法律约束的、即不受任何专利保护的无损数据压缩库,可在几乎任何计算机硬件和操作系统上使用。zlib 数据格式本身可以跨平台移植。与Unix 压缩和 GIF 图像格式中使用的 LZW 压缩方法不同,zlib 中当前使用的压缩方法基本上不会扩展数据。(在极端情况下,LZW 可以将文件大小增加两倍或三倍。)zlib 的内存占用量也与输入数据无关,如果需要,可以在压缩时降低一些成本。

zlib 由 Jean-loup Gailly(压缩)和 Mark Adler(解压缩)编写。Jean-loup 也是 gzip 的主要作者,comp.compress FAQ 列表的作者,Info-ZIP 的 ZIP 的前任维护者;Mark 也是 gzip 和 UnZip 主要解压例程的作者,也是 Zip 的原作者。毫不奇怪,zlib 中使用的压缩算法与 gzip 和 Zip 中的压缩算法基本相同,即源自 PKWARE 的 PKZIP 2.x 的 “deflate” 方法。

deflate 和 zlib 规范都在 1996 年 5 月获得了正式的 Internet RFC 地位,而 zlib 本身也被 Java Development Kit(JDK)1.1 版采用,既作为原始类,也作为 JAR 归档格式的一个组件。

今天,zlib是一种事实上的业界标准,以至于在标准文档中,zlib和DEFLATE常常互换使用。数以千计的应用程序直接或间接依靠zlib压缩函式库。

下载

如果以商用量产为目的,一般选择正式的发行版本为佳。在官方网址 https://zlib.net 页面下方会显示最新可下载的源码压缩包。也可以在 https://zlib.net/fossils 位置找到 zlib 的过往发行版本。根据需求选择合适的版本进行下载,以最新的 1.2.13 版本为例,在主页下方点击链接下载源码包 zlib-1.2.13.tar.gz

zlib release version
也可以直接使用 wget 命令下载:

wget https://zlib.net/zlib-1.2.13.tar.gz

交叉编译

解压缩源码包:

tar -xvf zlib-1.2.13.tar.gz

解压缩源码包之后建议先阅读 README 文档,里面有关于编译的相关信息。

让我们创建一个环境配置文件 environment-setup,配置最重要的交叉编译环境变量:

export SDK_ROOT=/opt/toolchains/aarch64--glibc--stable-2022.03-1
export SDKTARGETSYSROOT=$SDK_ROOT/aarch64-buildroot-linux-gnu/sysroot
export PATH=$SDK_ROOT/bin:$PATH

export CC="aarch64-linux-gcc --sysroot=$SDKTARGETSYSROOT"
export CXX="aarch64-linux-g++ --sysroot=$SDKTARGETSYSROOT"
export CPP="aarch64-linux-gcc -E --sysroot=$SDKTARGETSYSROOT"
export LD="aarch64-linux-ld --sysroot=$SDKTARGETSYSROOT"
export STRIP=aarch64-linux-strip
export RANLIB=aarch64-linux-ranlib
export AR=aarch64-linux-ar
export AS=aarch64-linux-as

在本示例中,交叉编译工具位于 /opt/aarch64--glibc--stable-2020.08-1/bin 目录下,将该目录配置到 PATH 环境变量,让系统能够正确搜索到。同时在配置 CCCXXCPP 环境变量时指定 --sysroot=<dir> 参数让交叉编译器搜索 dir 目录下的头文件与库文件。

cd zlib-1.2.13
source environment-setup
./configure --prefix=/usr
make
make DESTDIR=/tmp/sysroot install
  • 源码包解压后,使用 cd 命令切换到源码路径
  • 在源码目录下创建环境设置文件并调用 source 命令让环境变量生效
  • 执行源码包的 configure 文件,带上 --prefix 参数,指定安装路径
  • 执行 make 命令编译源码
  • 使用 DESTDIR 参数作为安装目标文件的前缀变量,后面带上你希望安装到的文件夹路径,更详细介绍可以参考 DESTDIR 官方介绍,也可以参考我的上一篇博文《交叉编译 libcap》关于 DESTDIR 的用法说明。

在这里插入图片描述

最终你就可以在 /tmp/sysroot 文件夹中找到交叉编译好的 zlib 的头文件及库文件。Good luck.

欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景


△ \triangle 交叉编译 libcap

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
交叉编译libx加GTK+2.1时候用到库各个库文件的集合,不用花费时间网上一个一个下载,已经经过本人亲测试实测,还可以编译GTK+directFB 1.1 libs_for_gtk Dir: atk-1.25.2.tar.gz atk-1.26.0.tar.gz bigreqsproto-1.1.2.tar.bz2 cairo-1.8.6.tar.gz CPAN-1.94.tar.gz DirectFB-1.1.1.tar.gz expat-2.0.1.tar.gz expat-2.1.0.tar.gz ExtUtils-MakeMaker-6.20.tar.gz fontconfig-2.4.2.tar.gz fontconfig-2.6.0.tar.gz fontconfig-2.7.3.tar.gz freetype-2.3.5.tar.bz2 freetype-doc-2.3.6.tar.bz2 glib-2.12.1.tar.bz2 glib-2.14.4.tar.gz glib-2.18.2.tar.bz2 glibc-2.2.5.tar.bz2 gtk+-2.10.14.tar.bz2 gtk+-2.10.7.tar.bz2 gtk+-2.12.12.tar.bz2 inputproto-2.2.tar.bz2 jpegsrc.v6b.rar jpegsrc.v6b.tar.gz kbproto-1.0.6.tar.bz2 libpng-1.2.10.tar.bz2 libpng-1.2.32.tar.lzma libpthread-stubs_0.1.orig.tar.gz libtool-1.5.22.tar.gz libtool-2.4.2.tar.xz libX11-1.0.3.tar.bz2 libX11-1.2.2.tar.bz2 libX11-1.3.2.tar.gz libX11-1.5.0.tar.bz2 libXau-1.0.7.tar.bz2 libXau-1.0.8.tar.bz2 libxcb-1.3.tar.bz2 libxcb-1.4.tar.bz2 libxcb-1.8.1.tar.bz2 libXdmcp-1.0.3.tar.gz libXdmcp-1.1.2.tar.bz2 libXext-1.0.1.tar.bz2 libXfont-1.4.4.tar.bz2 libXft-2.1.12.tar.bz2 libXft-2.1.13.tar.bz2 libxml2-2.6.30.tar.gz libxml2-2.6.32.tar.gz libxslt-1.1.29.tar.gz libXt-1.0.6.tar.bz2 pango-1.16.4.tar.bz2 pango-1.18.2.tar.gz pango-1.22.1.tar.bz2 pango-1.24.4.tar.bz2 pixman-0.24.0.tar.bz2 poky-pinky-3.1.1.tgz stubs-soft.h tiff-3.8.2.tar.gz tiff-4.0.7.tar.gz tslib-1.4.tar.gz xcb-proto-1.7.1.tar.bz2 xcmiscproto-1.1.2.tar.bz2 xcmiscproto-1.2.2.tar.bz2 xextproto-7.2.1.tar.bz2 xorg-server-1.3.0.0.tar.bz2 xorg-server-1.4.2.tar.bz2 xproto-7.0.23.tar.bz2 xtrans-1.2.7.tar.bz2 zlib-1.2.3.rar zlib-1.2.3.tar.gz zlib-1.2.5.tar.gz

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值