【问题标题】:my files linking to libGL.so.1我的文件链接到 libGL.so.1
【发布时间】:2015-07-08 17:20:18
【问题描述】:

好的,所以我不确定这是否相应发生,但是当我使用 g++ 时,我的文件似乎链接到 libGL.so.1

这是我运行 ldd 时输出的一部分

ldd a.out 
linux-vdso.so.1 =>  (0x00007fff151fe000)
libGLEW.so.1.10 => /usr/lib/x86_64-linux-gnu/libGLEW.so.1.10     (0x00007f86d4242000)
libglfw.so.3 => /usr/lib/libglfw.so.3 (0x00007f86d4028000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f86d3cf8000)

现在当我搜索我的 libGL.so 文件时,它也在同一目录 /usr/lib/x86....../libGL.so 中找到它

现在我的问题是为什么它链接到 ...so.1 而不是 libGL.so

我似乎也安装了 mesa-dev 库,但我想确保我的 GL 链接是指向图形驱动程序而不是 mesa 库我需要卸载 mesa 驱动程序并在此处重新链接库吗?

我需要删除 libgl1-mesa* 文件吗?安装显卡驱动程序后是否需要它们?

【问题讨论】:

  • 这可能会对您有所帮助:stackoverflow.com/questions/5760111/…(据我了解,libGL.so 应该是 libGL.so.1 的符号链接 - 您可以使用 ls -l /path/to/libGL.所以)。
  • 我刚刚做了那个检查,它给了我这个:ls -l /usr/lib/x86_64-linux-gnu/libGL.so lrwxrwxrwx 1 root root 13 Jul 3 16:28 /usr/lib /x86_64-linux-gnu/libGL.so -> mesa/libGL.so 为什么指向 mesa?它不应该指向我的显卡驱动程序吗?
  • 我只是投入了我的 5 美分 :-) 不能再帮忙了...(opengl 不是一个“规范”和“台面”一个符合 openGl 的实现吗?)
  • 我也有相同的文件 libGL.so,它不在 mesa 文件夹 /usr/lib/x86_64-linux-gnu/libGL.so 我如何使 libGL.so.1 链接到它?
  • @hopjoppe5:请不要!如果您不完全了解自己在做什么,请不要碰那些错综复杂的链接链。

标签: c++ opengl


【解决方案1】:

ldd 向您显示程序有效链接到的内容。不是在编译时给出了哪个文件或库。共享对象有一个叫做 soname 的东西,它是一种版本控制系统。当您的程序与libGL.so 链接时,从使用的特定样本中提取的链接器,soname 实际上是libGL.so.1 并将该名称放入您的程序二进制文件中。

在运行时,动态链接器ld.so 在整个目录范围内查找与此 soname 匹配的共享对象。目录列表可以配置,见man ld.soman ldconfig

现在libGL.so 是一个狡猾的野兽。它通常作为图形驱动程序的一部分提供。对于 Linux,有几个驱动程序包:

  • Mesa,开源 OpenGL 实现和驱动程序
  • NVidia 的专有 blob
  • AMD 的专有 blob

但是,在具有来自不同供应商的 GPU 的系统上,事情变得更加棘手; Linux 上没有正式指定的 ICD 机制。但是存在(相当多)libGL.so 调度程序/代理,它们查看已启动进程的图形环境并从那里加载适当的供应商 libGL.so。通常的实现是启动一个小帮助程序,它使用 GLX 传输来创建间接 OpenGL 上下文,读取 OpenGL 版本字符串并返回到实际 libGL.so 的路径以供使用。这是可行的,因为 X 服务器中的 GLX 模块与硬编码的 OpenGL 实现有关系,并且可以在不需要 libGL.so 的情况下谈论 GLX(参见例如 Xcb 中的 GLX 模块)。

一般来说,如果您不知道自己在做什么,则不应弄乱系统中的共享对象。只需将您的程序与-lGL 链接起来,链接器就会从那里获取它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2021-04-05
    • 2019-12-07
    相关资源
    最近更新 更多