doopsky 写了: ↑2019-05-22 5:30
我是经过测试,在 Ubuntu 19.04 (Disco) 中通过 apt-get 安装的 libfreetype6-dev 确实由于版本问题,导致 PHP 7.3.5 编译安装时出现 freetype-config not found 的问题。
确实。这里我弄错了,19.04源里的libfreetype6-dev包里没有freetype-config。changelog
http://changelogs.ubuntu.com/changelogs ... /changelog 里提到在2.9.1-1时,
- The `freetype-config' script is no longer installed by default
(Closes: #871470, #886461). All packages depending on libfreetype6-dev
should use pkg-config to find the relevant CFLAGS and libraries.
要解决也很简单,主要思路就是用pkg-config代替freetype-config。pkg-config可能没有预先安装上,需要用sudo apt install pkg-config来安装
比如直接修改php的configure,在34506行有这么一段
代码: 全选
for i in $PHP_FREETYPE_DIR /usr/local /usr; do
if test -f "$i/bin/freetype-config"; then
FREETYPE2_DIR=$i
FREETYPE2_CONFIG="$i/bin/freetype-config"
break
fi
done
if test -z "$FREETYPE2_DIR"; then
as_fn_error $? "freetype-config not found." "$LINENO" 5
fi
FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags`
FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs`
把用到freetype-config的地方全部用pkg-config以正确方式替换掉就行了。
代码: 全选
for i in $PHP_FREETYPE_DIR /usr/local /usr; do
if test -f "$i/bin/pkg-config"; then
FREETYPE2_DIR=$i
FREETYPE2_CONFIG="$i/bin/pkg-config"
break
fi
done
if test -z "$FREETYPE2_DIR"; then
as_fn_error $? "freetype-config not found." "$LINENO" 5
fi
FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG freetype2 --cflags`
FREETYPE2_LIBS=`$FREETYPE2_CONFIG freetype2 --libs`
再用./configure --with-freetype-dir=/usr .... 这样编译就可以了
doopsky 写了: ↑2019-05-22 5:30
我亲自测试,不在 /usr/local 中安装 FreeType,会出现错误:
代码: 全选
ft2build.h : No such file or directory.
从编译时头文件查找的原理来看,只要在编译freetype进行configure这步时设定的--prefix和最后安装的位置一致,php的--with-freetype-dir也一致,就不可能出这个问题。所以肯定你哪里弄错了。
doopsky 写了: ↑2019-05-20 14:26
1、先卸载已经通过 apt-get 安装的 libfreetype6 (同时也会移除 libfreetype6-dev 和其他软件包,无影响)
代码: 全选
apt-get remove libfreetype6
你这点我是最不认同的,如果安装的是ubuntu桌面版,卸载掉libfreetype6的话,整个图形环境都会被卸载掉,不是你轻描淡写的“无影响”。
随便删除、降级系统默认安装的包本身就是存在风险的,能避免就避免。