今天在用 GraphicsMagick (简写 gm) 处理 jpeg 的时候,不幸遇到了这个错误:Wrong JPEG library version: library is 62, caller expects 80
。
出现这个情况,是由系统的 libjpeg 版本号和 gm 调用的不一致而导致的。
解决方法,无非就是安装对应的 libjpeg 和 gm。
解决步骤
把 /usr/local/lib 和 /usr/lib64 中的 libjpeg* 全部删除,避免版本冲突
rm -r /usr/local/lib/libjpeg* rm -r /usr/lib64/libjpeg*
删除系统现有的 libjpeg 和 libjpeg-turbo 库
rpm -qa | grep libjpeg # 检查是否有 libjpeg 库 rpm -qa | grep libjpeg | xargs rpm -e --nodeps --allmatches # 有的都删掉
下载 libjpeg 源码
由于错误提示是要80版本,所以建议下载 libjpeg.8.x。
下载地址:ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates/jpegsrc.v8d.tar.gz编译安装 libjpeg
tar -zxvf jpegsrc.v8d.tar.gz cd jpeg-8d ./configure make && make install
将 libjpeg 添加到 /usr/lib64 中
默认编译安装的位置是/usr/local/lib
,但 gm 会检查/usr/lib64
位置的 libjpeg,所以创建一个软链接。cd /usr/lib64 ln -s /usr/local/lib/libjpeg.so.8.4.0 libjpeg.so.8
下载和编译安装 GraphicsMagick
可以选择 GraphicsMagick 1.3.20,编译安装的方式与步骤 4 类似。
安装好后,运行gm version
查看版本。
运行不了 gm?
如果输入上述代码显示 command not found
的话,可以手动地在安装包中找出 gm 文件,并复制到 /usr/local/lib
中。参考命令:
find . -name 'gm'
cp [SOURCE_LOCATION] /usr/local/lib/gm