前几天,发现了一个经典的出错信息:“undefined reference to 'FcFreeTypeQueryFace' ”。鼓捣了一阵,查找了一些资料,顺利解决。总结一下吧。
一、用的Linux是Cent OS 5.0版,下载Qt的最新版SDK,Qt 4.7.0,流程如下:
1. 进入Nokia的Qt的网站,选择:
下载 Qt SDK for Linux/X11 32-bit** (422 MB)
具体地址是:http://get.qt.nokia.com/qtsdk/qt-sdk-linux-x86-opensource-2010.05.1.bin
2. 下载下来之后,在系统中进行安装,流程如下:
chmod u+x qt-sdk-linux-x86-opensource-2010.05.1.bin (设置权限)
./qt-sdk-linux-x86-opensource-2010.05.1.bin(运行安装程序)
3. 根据向导的提示一步一步完成安装
安装好之后,,默认就会测试Qt Creator的运行,以验证安装是否成功;同时桌面上会增加一个Qt Creator的图标,双击可运行。
至此安装完毕。
4. 检查并测试环境是否正确的建立
这个主要就是检查环境变量是否设置正确。可以找到Qt Demo所在的目录,用Qt Creator打开一个默认的例子程序,编译运行一下,如果提示“No valid Qt version set Set one in Tools/Options”,就需要进入该目录进行设置,方法比较简单,不再赘述了。
二、错误的产生
验证安装正确,并且环境搭建成功后。运行测试程序,发现报错,错误提示为:“undefined reference to 'FcFreeTypeQueryFace' ”。
根据经验得知,这种错误一般就是由于系统所带的某个库版本与Qt要求的这个库版本不一致造成的,而一般是要升级系统自带的版本到更高的版本就能解决。
三、解决方法
在网上查阅相关资料后,发现这个问题跟fontconfig库有关,Cent OS 5.0上的默认是2.4.1的,而Qt则要求要2.4.2以上版本才可以。
于是从http://cgit.freedesktop.org/fontconfig/下载最新的2.8.0的源码。
把它拷贝进系统中,然后依次执行如下命令:
tar -zxvf fontconfig-2.8.0.tar.gz -C /mytmp (解压到mytmp文件夹中)
./configure --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man
make install
make clean (清除无用文件)
然后重新启动系统之后再次运行程序就没有问题了。