【已解决】- 解决方案见末尾。
Linux CentOS7.2 安装 GraphicsMagick 的时候,
忘记装依赖了,就把安装目录删除,重新安装,
但一直卡在 make 的时候, freetype 报错,
尝试了各种办法,就是过不去,求大神帮忙,感激不尽!!!
以下是我的操作步骤:
1、安装依赖:
yum -y install libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel
2、mkdir /usr/local/soft/
cd /usr/local/soft/
3、下载安装包:
wget https://nchc.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.30/GraphicsMagick-1.3.30.tar.gz
4、解压:
tar zxf GraphicsMagick-1.3.30.tar.gz
5、进入解压目录:
cd GraphicsMagick-1.3.30
6、使用 configure 配置安装路径,以及需要安装的模块:
./configure --prefix=/usr/local/GraphicsMagick --enable-shared
7、编译
make
GraphicsMagick 在 make 时报错,如下:
【make 报错】:
[root@lisl-host GraphicsMagick-1.3.31]# make
Makefile:9997: warning: overriding recipe for target `PerlMagick/Magick.pm'
Makefile:4551: warning: ignoring old recipe for target `PerlMagick/Magick.pm'
make all-am
make[1]: Entering directory `/usr/local/soft/gm/GraphicsMagick-1.3.31'
Makefile:9997: warning: overriding recipe for target `PerlMagick/Magick.pm'
Makefile:4551: warning: ignoring old recipe for target `PerlMagick/Magick.pm'
/bin/sh ./libtool --tag=CC --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H
-I. -I. -I/usr/include/freetype2 -fopenmp -g -O2 -Wall -pthread -MT magick/magick_libGraphicsMagick_la-annotate.lo
-MD -MP -MF magick/.deps/magick_libGraphicsMagick_la-annotate.Tpo -c -o magick/magick_libGraphicsMagick_la-annotate.lo
`test -f 'magick/annotate.c' || echo './'`magick/annotate.c
libtool: compile: gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I. -I/usr/include/freetype2 -fopenmp -g -O2 -Wall
-pthread -MT magick/magick_libGraphicsMagick_la-annotate.lo -MD -MP -MF magick/.deps/magick_libGraphicsMagick_la-annotate.Tpo -c magick/annotate.c
-fPIC -DPIC -o magick/.libs/magick_libGraphicsMagick_la-annotate.o
In file included from magick/annotate.c:70:0:
magick/annotate.c: In function ‘RenderFreetype’:
/usr/include/freetype2/freetype/freetype.h:801:37: error: ‘FT_ENCODING_PRC’ undeclared (first use in this function)
#define ft_encoding_gb2312 FT_ENCODING_PRC
^
magick/annotate.c:1232:23: note: in expansion of macro ‘ft_encoding_gb2312’
encoding_type=ft_encoding_gb2312;
^
/usr/include/freetype2/freetype/freetype.h:801:37: note: each undeclared identifier is reported only once for each function it appears in
#define ft_encoding_gb2312 FT_ENCODING_PRC
^
magick/annotate.c:1232:23: note: in expansion of macro ‘ft_encoding_gb2312’
encoding_type=ft_encoding_gb2312;
^
make[1]: *** [magick/magick_libGraphicsMagick_la-annotate.lo] Error 1
make[1]: Leaving directory `/usr/local/soft/gm/GraphicsMagick-1.3.31'
make: *** [all] Error 2
【高亮显示的错误信息】:
magick/annotate.c: In function ‘RenderFreetype’:
/usr/include/freetype2/freetype/freetype.h:801:37: error: ‘FT_ENCODING_PRC’ undeclared (first use in this function)
【我做过的尝试】:
即便我执行 "make clean" 、"make distclean"、"make installclean" ,
并删除 "/usr/local/GraphicsMagick" 目录,
再重新执行,也没用。
重新安装依赖,也没用。
1.3.31 换成 1.3.30 版本,也不行。
求各路大神指点迷津!!!
============================== 下面是解决过程 ==============================
解决方案:(同事提醒我的)
参考文章:
ImageMagick编译遇到ft_encoding_gb2312错误的解决办法 | 鳗鱼是条狗
https://kinggoo.com/error-magick-gb2312.htm?tdsourcetag=s_pcqq_aiomsg
分析:
再次查看报错信息:
magick/annotate.c: In function ‘RenderFreetype’:
/usr/include/freetype2/freetype/freetype.h:801:37: error: ‘FT_ENCODING_PRC’ undeclared (first use in this function)
#define ft_encoding_gb2312 FT_ENCODING_PRC
^
magick/annotate.c:1232:23: note: in expansion of macro ‘ft_encoding_gb2312’
encoding_type=ft_encoding_gb2312;
^
/usr/include/freetype2/freetype/freetype.h:801:37: note: each undeclared identifier is reported only once for each function it appears in
#define ft_encoding_gb2312 FT_ENCODING_PRC
^
magick/annotate.c:1232:23: note: in expansion of macro ‘ft_encoding_gb2312’
encoding_type=ft_encoding_gb2312;
一开始只关注有提示 error 的那部分信息,忽略了下面的内容:
magick/annotate.c:1232:23: note: in expansion of macro ‘ft_encoding_gb2312’
encoding_type=ft_encoding_gb2312;
^
/usr/include/freetype2/freetype/freetype.h:801:37: note: each undeclared identifier is reported only once for each function it appears in
#define ft_encoding_gb2312 FT_ENCODING_PRC
^
magick/annotate.c:1232:23: note: in expansion of macro ‘ft_encoding_gb2312’
encoding_type=ft_encoding_gb2312;
其实,重点是这部分信息,因为正是 ‘ft_encoding_gb2312’ 没有全大写,它导致了:
/usr/include/freetype2/freetype/freetype.h:801:37: error: ‘FT_ENCODING_PRC’ undeclared (first use in this function)
小结:
换各种搜索引擎,对以下内容进行全网搜索,都找不到有用信息,甚至相关信息几乎没有:
magick/annotate.c: In function ‘RenderFreetype’:
/usr/include/freetype2/freetype/freetype.h:801:37: error: ‘FT_ENCODING_PRC’ undeclared (first use in this function)
步骤:
修改 【源码包/magick/annotate.c】 文件中,第 1232 行的 【encoding_type=ft_encoding_gb2312】改为【encoding_type=FT_ENCODING_GB2312】:
命令:
cd /usr/local/soft/gm/GraphicsMagick-1.3.31/magick
ll
vim annotate.c
:set nu
:1232
i
此时,已进入插入模式,将 "encoding_type=ft_encoding_gb2312" 改为 "encoding_type=FT_ENCODING_GB2312"
按 Esc 退出
保存并退出 vim 模式 - 命令:
:wq
重新 make => 编译通过!!!编译过程较久(2分钟左右),需耐心等待。
接着,按安装步骤继续执行即可。
================= end 最后,谢谢大家关注本文,祝你们好运!!! end =======================