/usr/bin/ld: 在 Linux Mint 上的 Qt Creator 中构建 Qt5 应用程序时找不到 lGL

Posted

技术标签:

【中文标题】/usr/bin/ld: 在 Linux Mint 上的 Qt Creator 中构建 Qt5 应用程序时找不到 lGL【英文标题】:/usr/bin/ld: cannot find lGL when building Qt5 app in Qt Creator on Linux Mint 【发布时间】:2014-04-16 02:49:21 【问题描述】:

我正在将我的应用程序从 Qt4 移植到 Qt5。我从online installer 上的 Linux Mint 16 64 位安装 Qt5.2.1,在我的 MacBook Pro 上的虚拟机中。当我运行 qmake 并在 Qt Creator 中构建时,我得到:

/usr/bin/ld: cannot find -lGL

我需要openGL吗?当我在 Windows 或 OSX 上构建时,我没有使用它。我对 Linux 很陌生,远非 C++ 或 Qt 专家。我发现了一个post,其中包含一个从 mkspecs/common/linux.conf 中删除 -lGL 的技巧。那行得通。

我的问题是,假设我不需要 -lGL,阻止链接器尝试链接它的正常方法是什么?我想我在 .pro 文件中做了一些事情,但是什么?

【问题讨论】:

【参考方案1】:

Qt5 在内部大量使用了 OpenGL。在 Windows 上,OpenGL 支持有点不稳定(您必须安装原始供应商驱动程序,因为 Microsoft 从自动安装的驱动程序中剥离了 OpenGL),因此使用了内置的 OpenGL 仿真层库。

在 Linux 上,OpenGL 支持要好得多。如果标准驱动程序不支持 GPU,您至少会找到 Mesa 软管道后端。如果支持 GPU,那么过去几年 Linux 中开箱即用的 OpenGL 支持已经变得相当不错了。

在 MacOS X 上,OpenGL 实际上是所有高级图形操作的基础,因此是操作系统内部工作的一部分;理论上听起来不错,但也是快速版本周转的主要障碍,因为每个主要的 OpenGL 版本升级都要求操作系统更新。

现在,除非您安装的 Linux 严重过时,否则您实际上应该安装 OpenGL 库。如果不是(并且您的链接器错误告诉您这一点),只需安装 Mesa 开发包。

Linux Mint 是 Ubuntu 的衍生产品,而 Ubuntu 又是 Debian 的衍生产品。为 OpenGL 安装 Mesa 开发包的命令是

sudo apt-get install libgl1-mesa-dev

【讨论】:

我正在使用最新的 Linux Mint。我已经运行了您提到的命令,并且成功完成了。我仍然收到相同的链接错误。也许是为了澄清我的问题:在 Linux 上链接 -lGL 是否需要一个简单的“Hello World”程序?如果没有,我的程序也可能不需要 - 在这种情况下,我应该如何告诉链接器不要包含 -lGL? @DavidBurson:对于简单的 Hello World 来说,这不是必需的。实际上,您使用的任何使用 OpenGL 的共享库(如 Qt)都应该在内部创建链接,而无需您的程序明确指定。 谢谢。通过试验 2 个 Hello World 程序,一个作为小部件应用程序,另一个作为控制台应用程序,如果 .pro 文件没有 QT -= gui,链接器似乎会尝试链接 -lGL。如果我需要 gui 模块,我必须在 Debian/Ubuntu/Mint 上链接 -lGL,这真的是真的吗?还是 -lGL 是我可能不需要的额外东西? @DavidBurson:在线安装程序是指 Mint 包管理器吗?如果没有,您是否安装了从 Qt 项目网站下载的东西?如果是后者,请尝试从您的系统中清除它并通过分发存储库安装软件包。无论如何,如果使用 QtGui not,构建系统添加 OpenGL 是 no 意义的;首先是 QtGui 创建了对 OpenGL 的依赖。 @DavidBurson:取决于您的系统配置,但通常您可以安装软件包;你会得到一堆你忽略的警告。这是解决这个问题的可行方法,直到 Milt 赶上他们的包裹。

以上是关于/usr/bin/ld: 在 Linux Mint 上的 Qt Creator 中构建 Qt5 应用程序时找不到 lGL的主要内容,如果未能解决你的问题,请参考以下文章

gcc 错误“/usr/bin/ld: 找不到 -lstdc++”

Linux /usr/bin/ld:skipping incompatible 解决办法

/usr/bin/ld: cannot find -llzma /usr/bin/ld: cannot find -lbz2

[tech][转] 解决/usr/bin/ld: cannot find -lxxx 问题

错误-解决/usr/bin/ld: cannot find -lxxx 问题

错误-解决/usr/bin/ld: cannot find -lxxx 问题