安装Qt 5.2.1并使pkg-config识别它

时间:2014-04-03 00:45:35

标签: linux ubuntu octave pkg-config qt5.2

我的操作系统(Ubuntu 12.04)附带预先打包的Qt4库和其他相关内容。但是我想使用最新的香草Qt 5.2.1,我安装了它并且它工作正常,假设我编译了this framework,这取决于Qt。

我必须做的是将Qt 5.2.1库添加到$LD_LIBRARY_PATH。我的Qt 5.2.1主路径为/opt/Qt5.2.1/5.2.1/gcc_64,因此我的$LD_LIBRARY_PATH包含/opt/Qt5.2.1/5.2.1/gcc_64/lib(以及/opt/Qt5.2.1/Tools/QtCreator/lib与qtcreator相关的内容)

但是,最近我正在尝试编译最新的gnu octave。它的configure脚本通过调用cflags来查找Qt -l(即-I / -L / pkg-config标记)。

我发现pkg-config会查找相应的.pc文件,以获取与所有编译/链接标志相关的确切信息。我的系统(Ubuntu)维护.pc中所有必需/var/lib/dpkg/info/pkg-config.list文件位置的列表。 但是我在Ubuntu 12.04上没有任何$PKG_CONFIG_PATH环境变量(我不知道为什么)。

我新安装的Qt5在.pc中有一组/opt/Qt5.2.1/5.2.1/gcc_64/lib/pkgconfig/个文件。

那么,如何让pkg-config识别新安装的Qt 5.2.1中的开发库?

我知道只需从Ubuntu repo安装Qt4 -dev软件包就可以解决这个问题,但我不想这样做。我需要香草Qt 5.2.1用于其他目的。

注意:

  • 我已将路径/opt/Qt5.2.1/5.2.1/gcc_64/lib/pkgconfig/添加到pkg-config.list,但pkg-config不会相应地更新编译标记。
  • 将路径(/opt/Qt5.2.1/5.2.1/gcc_64/lib/pkgconfig/)添加到$PKG_CONFIG_PATH也不起作用。

这是八度配置脚本output

2 个答案:

答案 0 :(得分:6)

此问题是因为Octave正在搜索QtCore.pcQtGUI.pcQtNetwork.pc,但Qt5似乎已将其重命名为Qt5Core.pcQt5GUI.pcQt5Network.pc。一种解决方案是为它们创建符号链接:

cd /opt/Qt5.2.1/5.2.1/gcc_64/lib/pkgconfig/
ln -s ./Qt5Core.pc ./QtCore.pc
ln -s ./Qt5GUI.pc ./QtGUI.pc
ln -s ./Qt5Network.pc ./QtNetwork.pc
cd octave_build_dir
export $PKG_CONFIG_PATH="/opt/Qt5.2.1/5.2.1/gcc_64/lib/pkgconfig/"
./configure # with fingers crossed

我不确定名称变更的原因。我想知道是否应该存在某种机制,其中unversion版本将在$PKG_CONFIG_PATH中,并且更改您的首选项会将链接更改为正确的版本。

最后,您的config.logconfig.status比配置输出更有用。提到的文件将包含configure的实际命令和输出。

答案 1 :(得分:1)

carandraug的回答是正确的,但我不需要符号链接.pc文件(Qt 5.9.5)。要防止删除其他pkg-config地址,请导出PKG_CONFIG_PATH,如下所示:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/Qt5.2.1/5.2.1/gcc_64/lib/pkgconfig/

要在启动和系统范围内执行它(无需在每个终端会话中导出),请将这些行放在" .bashrc"的底线:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/Qt5.2.1/5.2.1/gcc_64/lib/pkgconfig/
export PKG_CONFIG_PATH