前言
Libjpeg-turbo 是一种 JPEG 图像格式的编解码器,相比于 libjpeg,它具有明显的天然优势,比如前者的压缩和解压速度更快、跨平台兼容能力强等。
本文讲解的是如何在 Linux 下编译 Libjpeg-turbo,文章后面的脚本适用于 Rocky Linux/AlmaLinux 10 和 9 等操作系统。
由于往后编译 libwebp 和 libgd 时为了获得更新的功能、更强的性能和更优秀的稳定性,所以通过编译源代码安装最新的版本,故有了本文的产生。
执行了文章后面的自动化安装脚本,不仅可得到动态链接库,而且还有 JPEG 编码和解码的二进制程序。
Libjpeg-turbo 的优势
- 第一个优势是比传统的 libjpeg 在压缩和解压上的速度快上近两倍。
- 第二个优势是既实现了传统的 libjpeg API,也实现了功能较弱但更简单的 TurboJPEG API。
- Libjpeg-turbo 还具有色彩空间扩展。
- 几乎常见的指令集支持,无论是 ARM、x86、x86-64 都具可用性。
运行在以上指令集的平台,它的速度是 libjpeg 的 2 到 6 倍。
-
它还支持市场上几乎所有常用操作系统平台,它为32位和64位的流行 Linux 发行版、Windows、OSX,以及 iOS 提供二进制支持。
- 它提供了与商业/闭源加速 JPEG 编解码器类似的性能。
以上资料参阅:
具体步骤
- 步骤一:安装依赖
-
步骤二:确定版本并获取源代码
如果因为网络问题不能下载源码包,那么请参考本站的其他文章: 如何在境内加速 GitHub 资源的下载以及克隆。
- 步骤三:使用 CMake 配置、生成和构建安装过程
-
步骤四:进行编译和安装
-
步骤五:设置环境变量
对 Libjpeg-turbo 安装目录下的
bin/和lib64/目录全路径分别添加进环境变量PATH和LD_LIBRARY_PATH中。 -
步骤六:将 lib64/ 路径添加进动态链接库文件:
echo "/opt/libjpeg-turbo/lib64" >>/etc/ld.so.conf - 步骤七:校验动态库版本
readelf -d /opt/libjpeg-turbo/lib64/libturbojpeg.so如果出现类似于以下的执行结果,则表示 libjpeg-turbo 安装成功:
[root@localhost ~]# readelf -d /opt/libjpeg-turbo/lib64/libturbojpeg.so Dynamic section at offset 0x101d80 contains 29 entries: Tag Type Name/Value 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2] 0x000000000000000e (SONAME) Library soname: [libturbojpeg.so.0] 0x000000000000000f (RPATH) Library rpath: [/opt/libjpeg-turbo/lib64] 0x000000000000000c (INIT) 0x4000 0x000000000000000d (FINI) 0xdb910 0x0000000000000019 (INIT_ARRAY) 0x102810 ... - 最后一步:验证二进制命令路径
[root@localhost ~]# source /etc/profile [root@localhost ~]# which cjpeg /opt/libjpeg-turbo/bin/cjpeg
编译安装 Libjpeg-turbo 的自动化脚本
执行上面的 Bash 脚本:
# 传入任意参数表示使用代理克隆 Github 仓库
bash /tmp/installer.sh 1
rm -f /tmp/installer.sh
后记
本文实现了完整的手把手地在 Rocky Linux 或 AlmaLinux 下通过源码编译安装最新版本 libjpeg-turbo 的过程。
而且还简要地说明了 libjpeg-turbo 的各种优势,并且在部分特性上与 libjpeg 进行比较。前者实现相近的功能,并且还具有出色的性能和平台兼容性。
若无意外,本文内容也兼容 RHEL 9 和 10。
鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。
本文章可以转载,但是需要说明来源出处!
本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com


