Ubuntu 14 LTS
我从今天早上开始全新安装了,我正在使用一台 PC,Nvidia graphic cards
并且已经从 Nvidia 网站 () 成功安装了最新版本的驱动程序NVIDIA-Linux-x86_64-352.30
。
我正在尝试构建QT 5.4
(qt-everywhere-opensource-src-5.4.2),但遇到了无法找到的问题开放图形。
为了解决所有依赖关系,我安装了以下软件包:
sudo apt-get update
sudo apt-get install libxi-dev build-essential libdbus-1-dev libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev
最后:
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev
据我所知,以上操作应该可以完全安装 Ubuntu 的 opengl 包。
然后我尝试使用以下命令配置 QT:
./configure -v -confirm-license -developer-build -opensource -xinput2 -dbus -opengl desktop -nomake examples -nomake tests)
我收到以下错误:
OpenGL auto-detection... ()
g++ -c -pipe -O2 -Wall -W -fPIC -I. -I../../../mkspecs/linux-g++ -o opengldesktop.o opengldesktop.cpp
g++ -Wl,-O1 -o opengldesktop opengldesktop.o -lGL
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
make: *** [opengldesktop] Error 1
OpenGL disabled.
The OpenGL functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL
我已经搜索了一段时间,我只能假设我已经安装了所有正确的软件包,但系统路径中缺少某些东西。缺少什么以及如何将其添加到系统路径中?
以下输出可能会有帮助:
ldconfig -p | grep libGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
答案1
可能是libgl1-mesa-dev
包裹吧。
答案2
在 Debian 8.5 上遇到了同样的问题:Nvidia 驱动程序 + 推荐的所有库从 Git 构建 Qt5已安装,但 Qt 5.9 的配置步骤由于缺少 OpenGL 支持而失败。
摘抄:
- Qt 配置通过链接内容检查 openGL 支持
libGL.so
- 但缺少库 libGL.so
由提供,添加了从到 的libgl1-mesa-glx
符号链接(在我的情况下)libGL.so
libGL.so.x.y.z
libGL.so.1.2.0
- 根据
dpkg
,libGL.so.1.2.0
也是其中的一部分libgl1-mesa-glx
,但由于“原因”而缺失 - 检查其他版本
libGL.so
发现有一个由 Nvidia 驱动程序安装的库版本(/usr/lib/x86_64-linux-gnu/libGL.so.346.35
) 向此文件添加符号链接解决了该问题
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
configure
使用标志重新运行-recheck
逐步程序(也可应用于类似问题):
$ ./configure -opensource -confirm-license -recheck -v 1>dump 2>&1
...
> grep 'libGL.so.*No' dump
> /usr/bin/ld.gold: error: cannot open /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so: No such file or directory
> /usr/bin/ld.gold: error: cannot open /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so: No such file or directory
$ ls -l /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so
lrwxrwxrwx 1 root root 14 Aug 19 2015 /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so -> libGL.so.1.2.0
库GL.so.1.2.0缺失,请检查提供商...
$ dpkg -S libGL.so.1.2.0
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
$ dpkg -l libgl1-mesa-glx
...
||/ Name Version Architecture Description
+++-========================================-=========================-=========================-=====================================================================================
ii libgl1-mesa-glx:amd64 10.3.2-1+deb8u1 amd64 free implementation of the OpenGL API -- GLX runtime
因此libgl1-mesa-glx
库已安装但libGL.so.1.2.0
路径中缺少。请检查其他libGL.so*
文件...
$ find /usr/lib -name libGL.so*
/usr/lib/x86_64-linux-gnu/libGL.so.346.35
/usr/lib/x86_64-linux-gnu/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib/libGL.so.1
这/usr/lib/x86_64-linux-gnu/libGL.so.346.35
是我的盒子上唯一有效的 openGL 库(由 Nvidia 驱动程序安装程序安装)。
解决方案:
sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
答案3
我在 Ubuntu 16.04 上使用 Qt 5.9 遇到了同样的问题。首先我运行配置当。。。的时候libgl1-mesa-dev和libglu1-mesa-dev没有安装。之后我安装了这些 libgl* 库。但错误“OpenGL not found”仍然存在。删除当前未压缩的目录并再次解压存档后,错误消失。
答案4
下面的解决方案在我后期失败了,因为 clang-c++ 无法正确编译 qt 源代码。因此发布了另一个使用 g++ 编译器本身的解决方案。
以下步骤检测具有 Nvidia 卡和专有驱动程序的 Mint 17.3 32 位系统上的桌面 OpenGL。在文件 /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecs/common/linux.conf 中,该文件包含在 /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecs/linux-g++/qmake.conf 中
环境变量必须设置为:
QMAKE_INCDIR_OPENGL = “/usr/include/GL” QMAKE_LIBDIR_OPENGL = “/usr/lib/” QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
QMAKE_LIBS_OPENGL = -lGL QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
使用的 libGL 指向我的系统中 Nvidia 驱动程序提供的库。/usr/lib/libGL.so -> /usr/lib/i386-linux-gnu/libGLX_nvidia.so.390.48
而 /usr/lib/i386-linux-gnu/libGL.so -> mesa/libGL.so 为 Mesa3D 提供的库。
还要确保安装了 mesa-common-dev、libglu1-mesa-dev、libgl1-mesa-dev 和其他 OpenGL 开发包。
/root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix=/root/work/qt5_setup/qt_install -opensource -confirm-license -platform linux-g++ && make -j 5