【问题标题】:Install Qt 5.2.1 and make pkg-config to recognize it安装 Qt 5.2.1 并让 pkg-config 识别它
【发布时间】:2014-04-03 00:45:35
【问题描述】:

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

我要做的就是将 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 脚本通过调用pkg-config 来查找Qt cflags(即-l/-I/-L 标志)。

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

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

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

我知道这可以通过从 Ubuntu 存储库安装 Qt4 -dev 软件包来解决,但我不想这样做。我需要 vanilla 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 配置脚本output

【问题讨论】:

  • 以下命令在您的系统中返回什么? pkg-config --exists --print-errors "QtCore" ?当你有 QtGuiQtNetwork 时它会返回吗?它们中的任何一个会导致错误吗?
  • Package QtCore was not found in the pkg-config search path. Perhaps you should add the directory containing 'QtCore.pc' to the PKG_CONFIG_PATH environment variable No package 'QtCore' found -- QtGuiQtNetwork 相同
  • 我的错,我的机器里有Qt5Core.pcQt5Gui.pc等。让我测试一下,把它们加到PKG_CONFIG_PATH,我会告诉你的。
  • 我的回答是否解决了您的问题?八度现在可以构建吗?有人点了赞,但我不知道是不是你。
  • 没有必要在你的每一个问题标题前加上一个标签——这正是“标签”字段的用途。如果你想在标题中提及主题,那很好,但不需要专门的标签前缀。

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


【解决方案1】:

这个问题是因为 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

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

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

【讨论】:

  • 是的,configure 现在可以工作了,至少你的 hack 给出了编译标志。但坏消息是它给了这个error configure: WARNING: QAbstractItemModel::beginResetModel() not found -- disabling GUI
  • @ramgorur 我刚刚检查过,Qt 5.2 确实有that method。查看您的 config.log 以了解导致 configure 说该方法不存在的确切测试失败。
  • 看起来当前版本的 octave 不支持使用 Qt5+ 进行编译。 savannah.gnu.org/bugs/…
【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    相关资源
    最近更新 更多