【问题标题】:Qt: can't find -lGL errorQt:找不到-lGL错误
【发布时间】:2013-08-26 17:08:10
【问题描述】:

我刚刚重新安装了 QtCreator,创建了新项目(Qt Application),编译后得到了这个:

/usr/bin/ld: **cannot find -lGL**
collect2: error: ld returned 1 exit status
make: *** [untitled1] Error 1
18:07:41: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit)
When executing step 'Make'

项目为空,我没有提交任何更改

Qt Creator 2.7.2
基于 Qt 5.1.0(32 位)
Ubuntu 13.04

我该如何解决这个问题?

【问题讨论】:

标签: c++ qt compiler-construction qt-creator ubuntu-13.04


【解决方案1】:

你应该安装包“libgl1-mesa-dev”:

sudo apt install libgl1-mesa-dev

【讨论】:

  • 正确答案如何?为什么要链接到未使用的库?链接器标志不应该不包括-lGL吗?
  • @Cuadue:错误和 libgl1-... 中的 GL 用于 OpenGL,这是 Qt 5.x 的基本依赖项。这是开发人员在设置 Qt 开发时的常见错误——但一旦他们安装了 OpenGL 开发库,他们就再也看不到它了。
  • Ubuntu 20.04 附带了所需的 OpenGL 库,无需安装任何软件包,您只需使用 ln 在 /usr/lib 中创建链接,请参阅 destan's answer,@ 987654322@ 里面好像没什么用处。
【解决方案2】:

您不需要安装任何东西。 libGL 已经安装了 Ubuntu,你只需要软链接它。 (针对 ubuntu 14.x 和 15.x 测试,可能适用于更高版本)

  1. 首先找到 GL 库
  2. 然后在/usr/lib下链接
  3. 如果缺少库,可以通过 libgl1-mesa-dev 包安装

您可以这样做:

$ locate libGL
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLU.so.1
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2.0.0
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so

【讨论】:

  • 是的,这行得通。在这种情况下处理共享库之后运行ldconfig 通常是个好主意。
  • 这在 Ubuntu 16.10 上对我有用,但我很困惑现在是使用 NVidia GPU 进行 OpenGL 渲染还是使用软件渲染器?
  • 你先生,应该得到饼干而不是骗子谁是大蜱
  • 这适用于我在 Ubuntu 18.04 和 Qt 5.12.6 上。 sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so
  • 我想推荐这个解决方案。它适用于我的 Ubuntu 16.04 LTS 和 Qt 5.0.2(基于 5.15.2)sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so
【解决方案3】:

gui Qt 模块是included by default。如果您不想在项目中使用它(例如,它是一个库或仅使用 stdio),则需要在 .pro 文件中指定。

QT -= gui

并且无论是否安装了lGL,链接器都不会尝试查找。

我的情况确实有点奇怪,因为使用 Qt 的主要原因是创建 gui。安装 GL 库当然不难,我只是想知道为什么我的又快又脏的 Hello World 想要它。

【讨论】:

    【解决方案4】:

    写:

    yum provides */libGL.so 
    

    提供后:

    yum install mesa-libGL-devel mesa-libGLU-devel
    

    【讨论】:

      【解决方案5】:

      这对我有用:

      sudo ln -s /usr/lib/libEGL1.so /usr/lib/libGL.so
      

      【讨论】:

        【解决方案6】:

        我的系统是 x86 计算机上的 Ubuntu 16.04(带有 NVIDIA GeForce GPU)。

        检查位于/usr/lib/x86_64-linux-gnu的库文件

        ls -al /usr/lib/x86_64-linux-gnu/libG*
        

        如果您看到断开的链接,请重新安装libgl1-mesa-glx

        sudo apt install --reinstall libgl1-mesa-glx
        

        然后,重新检查库。

        【讨论】:

          【解决方案7】:

          就我而言:我在 Win10 64 位中安装了 QT 32 位库,但它遇到了错误,我更改为所有 64 位,QT 创建器运行顺利。

          【讨论】:

            【解决方案8】:

            一分钟前在 suse 中解决了这个问题。 只需执行以下步骤,QTCreator 应该可以正常工作。

            sudo zypper install --type pattern devel_basis

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-02-27
              • 1970-01-01
              • 2018-04-22
              • 1970-01-01
              • 2014-12-13
              相关资源
              最近更新 更多