Loading...

关于go-webpbin库在Linux报错failed to encode image to WebP: exit status 1.......的问题

问题:

在上传图片的时候报错:failed to encode image to WebP: exit status 1. .bin/webp/cwebp: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by .bin/webp/cwebp)

原因

报错信息显示是 cwebp 工具需要的共享库(libm.so.6)版本不满足要求,这通常是因为你的 CentOS 7 系统默认的 glibc 版本较低,而 cwebp 工具依赖较新的 glibc 版本(至少 2.29)。而我的项目是goframe项目,使用了 go-webpbin 库,虽然在打包的时候使用了交叉编译,但 go-webpbin 运行时会调用本地的 cwebp,仍然受限于运行环境的 glibc 版本。

解决方法

1. 升级你的 glibc 检查当前 glibc 版本:

ldd --version

如果显示 glibc 2.17 或更低,需要手动升级。

注意⚠️:在升级glibc前,请务必备份系统数据和文件,因为可能会导致系统崩溃,谨慎!!!

2. 升级 glibc 至 2.29 或更高版本:

这里升级到 v2.31,按顺序执行以下命令:

wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.31.tar.gz

tar -xvzf glibc-2.31.tar.gz 
                          
cd glibc-2.31    
               
mkdir build

cd build

unset LD_LIBRARY_PATH && ../configure --prefix=/usr 
--disable-profile --enable-add-ons --with-headers=/usr/include 
--with-binutils=/usr/bin --disable-sanity-checks --disable-werror
               
make -j6

sudo make install

make localedata/install-locales

如果执行到 unset LD_LIBRARY_PATH && ../configure ...... 时候报错:

configure: error:

*** These critical programs are missing or too old: compiler xxxxx

*** Check the INSTALL file for required versions.

glibc-2.29 根目录执行命令:cat INSTALL | grep -E  "newer|later" 查看所需工具链版本,需要确保工具链满足以下版本要求:(如需升级请自行 Google 百度

工具名称所需版本版本查看命令
make>= 4.0make -v
bison>= 2.7yum info bison
python>= 3.4python --version
gcc>= 5.0gcc -v
binutils>= 2.25yum info binutils
texinfo>= 4.7yum info texinfo
sed>= 3.02sed --version
gdb>= 7.8gdb --versiont
gettext>= 0.10.36yum info gettext

所有工具链升级完后重新构建

unset LD_LIBRARY_PATH && ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks --disable-werror

构建编译过程:

20250107154519023.webp

3. 验证新版

ldd --version

20250107153252976.webp

0

回到顶部