Rocky Linux 9 及 CentOS Stream 9 编译安装 libgd_安装GD库

By | 最新修改:2025-04-08

本文的主要内容是:在 Rocky Linux 9 / CentOS Stream 9 系统下通过源代码进行编译安装 GD 库。

GD 全称 “GD Graphics (Draw) Library”(GD 图形(绘图)库),可以让程序员动态地创建图形图像。

由于在部署 LNMP 架构时业务功能的需求,在 Nginx 编译源代码时需要 GD 库的支持。

libgd-gd库

前提条件

本次从源代码编译安装的 LibGD 要支持 WebP 功能,因此在编译 LibGD 之前要先编译安装 libwebp 库。

具体请见: Rocky Linux 9 编译安装 libWebP 库


安装 REMI 源

export MAX_CNT=10
cat>/tmp/installer.sh<<EOF
echo "+++++++++++++++++++++++++++++++++获取 REMI 软件源仓库:"
dnf install -y https://mirrors.aliyun.com/remi/enterprise/remi-release-9.rpm
code=\$?

count=1
while [ \$code -gt 0 ]; do
    if [ \$count -eq \$MAX_CNT ]; then
        break
    fi
    count=\$((\$count + 1))
    echo "+++++++++++++++++++++++++++++++++获取 REMI 软件源失败!现重试:"
    dnf install -y https://mirrors.aliyun.com/remi/enterprise/remi-release-9.rpm
    code=\$?
done

if [ \$code -gt 0 ]; then
    echo "+++++++++++++++++++++++++++++++++获取 REMI 源失败!"
    exit
fi

echo "+++++++++++++++++++++++++++++++++更换 REMI 源为国内源:"
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^#baseurl=http://rpms.remirepo.net|baseurl=https://mirrors.aliyun.com/remi|g' \
    -e 's|^baseurl=http://rpms.remirepo.net|baseurl=https://mirrors.aliyun.com/remi|g' \
    -i.bak  /etc/yum.repos.d/remi*

echo "+++++++++++++++++++++++++++++++++清理及重新生成 DNF 缓存:"
sleep 5
dnf clean all
dnf makecache
dnf repolist
echo "+++++++++++++++++++++++++++++++++升级系统软件:"
dnf update -y
EOF
bash /tmp/installer.sh

安装依赖

dnf install -y wget autoconf automake libtool freetype-devel fontconfig \
libpng-devel libtiff-devel freetype-devel fontconfig-devel libpng libtiff \
libavif-devel libavif-tools

下载 libgd 的源代码

如果因为网络问题不能下载源码包,那么请参考本站的其他文章: 如何在境内加速 GitHub 资源的下载以及克隆

cd /tmp
# 如果不存在,则创建它
## git clone https://github.com/libgd/libgd.git
# 获取最新版本: https://github.com/libgd/libgd/releases/
export LIBGD_VER=2.3.3
cat>/tmp/installer.sh<<EOF
cd /tmp
if [ ! -f libgd-\${LIBGD_VER}.tar.gz ]; then
    echo "+++++++++++++++++++++++++++++++++下载 LibGD 源代码包:"
    wget --continue https://github.com/libgd/libgd/releases/download/gd-\${LIBGD_VER}/libgd-\${LIBGD_VER}.tar.gz
    code=\$?

    count=1
    while [ \$code -gt 0 ]; do
        if [ \$count -eq \$MAX_CNT ]; then
            break
        fi
        count=\$((\$count + 1))
        rm -f libgd-\${LIBGD_VER}.tar.gz*
        echo "+++++++++++++++++++++++++++++++++LibGD 源代码包下载失败!现重新下载:"
        sleep 1
        wget --continue https://github.com/libgd/libgd/releases/download/gd-\${LIBGD_VER}/libgd-\${LIBGD_VER}.tar.gz
        code=\$?
    done

    if [ \$code -eq 0 ]; then
        echo "+++++++++++++++++++++++++++++++++LibGD 源代码包文件下载成功!"
    else
        echo "+++++++++++++++++++++++++++++++++LibGD 源代码包文件下载失败!"
        exit
    fi
fi

if [ -f libgd-\${LIBGD_VER}.tar.gz ]; then
    echo "+++++++++++++++++++++++++++++++++解压缩 libgd 的源代码包!"
    tar zxf libgd-\${LIBGD_VER}.tar.gz
fi
EOF
bash /tmp/installer.sh

从源代码编译安装

cat>/tmp/installer.sh<<EOF
cd /tmp
if [ -d libgd-\${LIBGD_VER} ]; then
    cd libgd-\${LIBGD_VER}

    echo "+++++++++++++++++++++++++++++++++初始化 LibGD 安装过程:"
    ./bootstrap.sh

    if [ \$? -gt 0 ]; then
        echo "+++++++++++++++++++++++++++++++++初始化失败!"
        exit
    fi

    echo "+++++++++++++++++++++++++++++++++LibGD 编译条件开始配置:"
    ./configure --with-webp --with-jpeg --with-png --with-tiff --with-avif

    if [ \$? -gt 0 ]; then
        echo "+++++++++++++++++++++++++++++++++LibGD 配置失败!"
        exit
    fi

    echo "+++++++++++++++++++++++++++++++++开始编译 libgd:"
    make

    if [ \$? -gt 0 ]; then
        echo "+++++++++++++++++++++++++++++++++LibGD 编译失败!"
        exit
    fi

    echo "+++++++++++++++++++++++++++++++++开始安装 LibGD:"
    sleep 5
    make install

    if [ \$? -gt 0 ]; then
        echo "+++++++++++++++++++++++++++++++++LibGD 安装失败"
        exit
    fi

    ln -sf /usr/local/lib/libgd.so* /usr/lib64/
    echo "+++++++++++++++++++++++++++++++++LibGD 编译安装成功!"
fi
echo "+++++++++++++++++++++++++++++++++删除 LibGD 的源代码包和目录:"
sleep 5
rm -rfv /tmp/libgd-\${LIBGD_VER}*
EOF
bash /tmp/installer.sh

创建 LibGD 动态库的软链接

ln -sf /usr/local/lib/libgd.so* /usr/lib64/

校验动态文件信息

readelf -d /usr/local/lib/libgd.so /usr/lib64/libgd.so.3

命令执行结果的前面几行信息完全匹配,就表示 LibGD 安装成功。


后记

本文是关于如何在 Rocky Linux 9 / CentOS Stream 9 下编译源代码安装最新稳定版 LibGD (GD 库)的手把手教程。


程序知路

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com