3

我的操作系统(Ubuntu 12.04)带有一个预打包的 Qt4 库和其他相关的东西。但是我想使用最新的 vanilla Qt 5.2.1,我已经安装了它并且工作正常,假设我已经编译了这个依赖于 Qt 的框架。

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

但是,最近我正在尝试编译最新的 gnu octave。它的configure脚本通过cflags调用. -l_-I-Lpkg-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 中的开发库?

我知道这可以通过-dev从 Ubuntu 存储库安装 Qt4 包来解决,但我不想这样做。我需要香草 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也不起作用。

这是 octave 配置脚本输出

4

2 回答 2

8

这个问题是因为 Octave 正在搜索QtCore.pc, QtGUI.pcQtNetwork.pc但 Qt5 似乎已将它们重命名为Qt5Core.pc,Qt5GUI.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.logandconfig.status将比仅配置的输出更有用。提到的文件将包含您配置的实际命令和输出。

于 2014-04-19T00:50:21.997 回答
2

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
于 2018-05-23T17:21:11.993 回答