本文主要介绍在 Rocky Linux/AlmaLinux 10 和 9 系统下通过源代码进行编译安装 libgd,也称 GD 库。
GD 库全称 “Graphics (Draw) Library”( 图形(绘图)库),是可以让程序员动态且快速地创建 PNG、JPEG、GIF、WebP和 WBMP 图像的图形库,支持像 C、PHP、Python、Lua 等编程语言。
由于部署 LNMP 架构过程中业务功能的需求,在 OpenResty/Nginx 编译源代码时需要 GD 库的支持。
提前需要安装的依赖
- libjpeg-turbo:《Linux编译安装libjpeg-turbo》
为了让 JPEG 的处理获得更优秀的性能和效果,libgd 的编译需要使用到 libjpeg-turbo,故这也是一个必要的依赖条件。
此依赖仅在 Rocky Linux/AlmaLinux 10 下有用,在版本 9 下需要安装
libjpeg-turbo-devel。 - libwebp:《Rocky Linux,AlmaLinux编译libwebp及Nginx自适应WebP》
编译时需要 WebP 开发库和动态库的支持。
安装过程
-
步骤一:安装 EPEL 源以支持 AVIF 相关软件包的安装;
EPEL(Extra Packages for Enterprise)是为红帽企业Linux操作系统及其衍生发行版提供额外稳定版软件包的第三方仓库。
-
步骤二:dnf 方式安装必要依赖;
-
步骤三:从源代码构建 gd(bootstrap);
-
步骤四:编译前进行源代码编译条件的处理,生成 Makefile:
指定 –prefix,JPEG_CFLAGS 和 JPEG_LIBS,及 LIBWEBP_CFLAGS 和 LIBWEBP_LIBS 的值定制安装选项。
-
步骤五:对源代码进行编译和安装操作;
-
步骤六:添加 libgd 编译后相关目录全路径到系统环境变量中:
- 添加编译后的
lib/目录的路径到文件/etc/ld.so.conf。 - 添加上述路径到环境变量
LD_LIBRARY_PATH中,并且把该环境变量的追加命令放置到文件/etc/profile。 - 把 GD 库用于图像编解码的二进制程序所在目录
bin/完整路径添加到环境变量PATH,并且这个过程放置到文件/etc/profile。
- 添加编译后的
- 检查 libgd 动态库的安装路径和版本:
ldconfig -v | grep libgd
自动化安装脚本
如果使用代理时克隆失败,并且又不能用 Github 的 URL,可参考站内文章《GitHub国内访问慢?5种加速方案解决克隆失败,提升下载速度》的方案来调整脚本中的代理。
执行上述脚本:
# 传入参数表示使用代理来克隆 libgd Github 仓库
bash /tmp/installer.sh 123
rm -f /tmp/installer.sh
写在最后
Nginx 的图像过滤模块 ngx_http_image_filter_module 依赖 libgd,其提供图像处理的基础能力,来实现对 PNG、JPEG、GIF 和 WebP 等格式图片进行动态处理和转换。为确保 GD 库足够新,本文采用对源代码编译的方式安装 libgd。
另,PHP 的编译安装也需要 GD 库用以支持 php-gd 模块。
本文在 Rocky Linux/AlmaLinux 9 和 10 下测试通过。
鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。
本文章可以转载,但是需要说明来源出处!
本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com

