- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,所以我不确定这是否相应地发生了,但是当我使用 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* 文件吗?当我安装显卡驱动程序时需要它们吗?
最佳答案
ldd
显示程序有效 链接到什么。没有在编译时给出哪个文件或库。共享对象有一个叫做 soname 的东西,它是一种版本控制系统。当您的程序链接到 libGL.so
时,链接器从所使用的特定样本中提取出 soname 实际上是 libGL.so.1
并将该名称放入你的程序二进制文件。
在运行时,动态链接器 ld.so
在整个目录范围内查找与此 soname 匹配的共享对象。可以配置目录列表,参见 man ld.so
和 man ldconfig
。
现在 libGL.so
是一个棘手的野兽。它通常作为图形驱动程序的一部分提供。对于 Linux,周围有几个驱动程序包:
然而,在使用来自不同供应商的 GPU 的系统上,事情变得更加棘手; Linux 上没有正式指定的 ICD 机制。但是存在(相当多的)libGL.so 调度程序/代理,它们查看进程已启动的图形环境,并从那里加载适当的供应商 libGL.so。通常的实现是启动一个小的帮助程序,它使用 GLX 传输创建一个间接的 OpenGL 上下文,读取 OpenGL 版本字符串并返回到实际 libGL.so 的路径,以便使用。这是有效的,因为 X 服务器中的 GLX 模块与 OpenGL 实现的关系是硬编码的,并且可以在不需要 libGL.so 的情况下讨论 GLX(例如参见 Xcb 中的 GLX 模块)。
一般来说,如果您不知道自己在做什么,则不应弄乱系统中的共享对象。只需将您的程序与 -lGL
链接起来,链接器就会从那里获取它。
关于c++ - 我的文件链接到 libGL.so.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31285958/
我正在尝试在 linux 14.04“Trusty Tahr”上安装(离线安装程序)Qt 5.4.0,但我不断收到错误消息: 警告:/home/bd-01/Qt5.4.0//Tools/QtCreat
我在我的电脑上新安装了 Fedora 19 x86_64。我写了一个简单的 OpenGL 程序,但编译失败。 gcc -o quad quad.c -lX11 -lGL -lGLU /
我正在使用 Nvidia 290.10 64 位驱动程序开发基于 linux 的 c++ OpenGL 应用程序。我正在尝试减少它的内存占用,因为它使用了大量的实时数据。 我一直在使用 valgrin
好的,所以我不确定这是否相应地发生了,但是当我使用 g++ 时,我的文件似乎链接到 libGL.so.1 这是我运行 ldd 时的部分输出 ldd a.out linux-vdso.so.1 =>
我正在尝试安装 ALBERTA。运行时./configure ,我收到此错误消息: checking for main in -lGL... no configure: error: Library
当我尝试 import cv2在 python 中,我收到以下错误: ImportError: libGL.so.1: cannot open shared object file: No such
由于出现以下错误,我在访问我的heroku应用程序时遇到问题 2020-09-11T10:25:09.492648+00:00 app[web.1]: ImportError: libGL.so.1:
我正在使用 Ubuntu 12.04 (精确穿山甲)与 Oracle JDK 7,当我从 Eclipse 运行 Android 模拟器时,它给出了这个错误: [2012-07-04 02:52:10
我正在尝试运行 cv2,当我尝试导入它时,我得到了 ImportError: libGL.so.1: cannot open shared object file: No such file or d
当我尝试执行我的程序时出现此错误: libGL error: unable to load driver: i965_dri.so libGL error: driver pointer missin
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在尝试使用 gDEBugger 调试我的 OpenGl 项目,但不幸的是 gDEBugger 甚至没有启动: ~/bin/gDEBugger581-x86_64> ./gDEBugger-bin
我试图将我的程序链接到 libGL.so 库,但我的可执行文件最终也引用了 libnvidia-tls.so.331.62 和 libnvidia-glcore.so.331.62。尽管需要 NVid
这是人们一直遇到的标准问题,但我无法让它发挥作用。我在 Linux Mint 17.3 上并通过 repo 进行了安装。当我尝试编译 5_Simulations 目录(实际上,fluidsGL)时,出
所以我刚刚开始使用 OpenTK,并将此代码放在一个继承 GameWindow 类的类中: protected override void OnRenderFrame(FrameEventArgs e
我有 OS X lion,在构建需要 GL 的程序时遇到了这个错误。 ld: library not found for -lGL 如何安装 libGL?我通常使用 MacPorts,但在那里找不到
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我计划使用 Haxe 进行游戏开发,利用它的 C++ 目标,为此我选择了 HaxeFlixel 框架,它使用 OpenFL 作为后端。 “hello world”测试在 flash 上运行得很好,HT
我正在使用 Fedora 19 64 位 (GNOME 3) 进行 Android 开发。 locate libGL 给我: /home/ericnguyen/adt/sdk/tools/lib/li
大多数在 Linux 上使用 OpenGL 的应用程序(和库)在运行时使用 dlopen API 加载 libGL.so,而不是动态链接它。 他们为什么要这样做? 我能想到的唯一原因是因为任何图形驱动
我是一名优秀的程序员,十分优秀!