Opengl for Ubuntu14(构建QT 5.4)

Opengl for Ubuntu14(构建QT 5.4)

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.solibGL.so.x.y.zlibGL.so.1.2.0
  • 根据dpkglibGL.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-devlibglu1-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

相关内容