我的操作系统(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。
答案 0 :(得分:6)
此问题是因为Octave正在搜索QtCore.pc
,QtGUI.pc
和QtNetwork.pc
,但Qt5似乎已将其重命名为Qt5Core.pc
,Qt5GUI.pc
, Qt5Network.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.log
和config.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