/usr/bin/ld:找不到-lGL(Ubuntu 16.04) [英] /usr/bin/ld: cannot find -lGL (Ubuntu 16.04)

查看:582
本文介绍了/usr/bin/ld:找不到-lGL(Ubuntu 16.04)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在VirtualBox内运行的Ubuntu 16.04 LTS 64位上编译我的跨平台OpenGL应用程序.但是,它总是失败,并显示/usr/bin/ld: cannot find -lGL.

I'm trying to compile my cross-platform OpenGL application on Ubuntu 16.04 LTS 64-bit running inside a VirtualBox. However it always fails with /usr/bin/ld: cannot find -lGL.

我已经广泛地搜索了这个问题,并尝试安装作为解决方案提到的每个软件包,甚至几次手动创建符号链接,等等...基本上,我已经尝试了所有可以找到的解决方案.还有其他想法吗?我想念什么?

I've googled the issue extensively and tried installing every package mentioned as a solution, even manually created symbolic links a couple times, etc... Basically I've tried any solution I could find. Any more ideas? What am I missing?

locate libGL的输出:

/usr/lib/libGL.so
/usr/lib/nvidia-375/libGL.so
/usr/lib/nvidia-375/libGL.so.1
/usr/lib/nvidia-375/libGL.so.1.0.0
/usr/lib/nvidia-375/libGLESv1_CM.so
/usr/lib/nvidia-375/libGLESv1_CM.so.1
/usr/lib/nvidia-375/libGLESv1_CM_nvidia.so.1
/usr/lib/nvidia-375/libGLESv1_CM_nvidia.so.375.66
/usr/lib/nvidia-375/libGLESv2.so
/usr/lib/nvidia-375/libGLESv2.so.2
/usr/lib/nvidia-375/libGLESv2_nvidia.so.2
/usr/lib/nvidia-375/libGLESv2_nvidia.so.375.66
/usr/lib/nvidia-375/libGLX.so
/usr/lib/nvidia-375/libGLX.so.0
/usr/lib/nvidia-375/libGLX_indirect.so.0
/usr/lib/nvidia-375/libGLX_nvidia.so.0
/usr/lib/nvidia-375/libGLX_nvidia.so.375.66
/usr/lib/nvidia-375/libGLdispatch.so.0
/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.13
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.13.0
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.13
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.13.0
/usr/lib/x86_64-linux-gnu/libGLU.a
/usr/lib/x86_64-linux-gnu/libGLU.so
/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/libhybris-egl/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/libhybris-egl/libGLESv2.so.2.0.0
/usr/lib/x86_64-linux-gnu/mesa/libGL.so
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib32/nvidia-375/libGL.la
/usr/lib32/nvidia-375/libGL.so
/usr/lib32/nvidia-375/libGL.so.1
/usr/lib32/nvidia-375/libGL.so.1.0.0
/usr/lib32/nvidia-375/libGLESv1_CM.so
/usr/lib32/nvidia-375/libGLESv1_CM.so.1
/usr/lib32/nvidia-375/libGLESv1_CM_nvidia.so.1
/usr/lib32/nvidia-375/libGLESv1_CM_nvidia.so.375.66
/usr/lib32/nvidia-375/libGLESv2.so
/usr/lib32/nvidia-375/libGLESv2.so.2
/usr/lib32/nvidia-375/libGLESv2_nvidia.so.2
/usr/lib32/nvidia-375/libGLESv2_nvidia.so.375.66
/usr/lib32/nvidia-375/libGLX.so
/usr/lib32/nvidia-375/libGLX.so.0
/usr/lib32/nvidia-375/libGLX_indirect.so.0
/usr/lib32/nvidia-375/libGLX_nvidia.so.0
/usr/lib32/nvidia-375/libGLX_nvidia.so.375.66
/usr/lib32/nvidia-375/libGLdispatch.so.0
/var/lib/VBoxGuestAdditions/lib/libGL.so.1

(显然,系统有足够多的libGL可供选择,但仍找不到它.)

(Clearly the system has more than enough libGL to choose from, yet it still won't find it.)

推荐答案

-static命令行开关阻止其链接到共享库.

That -static command line switch prevents it from linking to shared libraries.

在链接器命令行中,将-lGL替换为-Wl,-Bdynamic -lGL -static,以仅动态链接-lGL.

In the linker command line replace -lGL with -Wl,-Bdynamic -lGL -static to only link -lGL dynamically.

这篇关于/usr/bin/ld:找不到-lGL(Ubuntu 16.04)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆