linux - Q :/usr/bin/ld: cannot find -lGL

标签 linux ubuntu

加载程序给我这个错误。我正在运行 Ubuntu 15.04。 当我这样做时:找到/usr -type f -name "libGL*"

我明白了:

/usr/lib/nvidia-352/libGLESv1_CM.so.352.63
/usr/lib/nvidia-352/libGLESv2.so.352.63
/usr/lib/nvidia-352/libGL.so.352.63
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
/usr/lib32/nvidia-352/libGL.la
/usr/lib32/nvidia-352/libGLESv1_CM.so.352.63
/usr/lib32/nvidia-352/libGLESv2.so.352.63
/usr/lib32/nvidia-352/libGL.so.352.63

所以,如果我知道哪个是正确的,我可以通过 -L"thatfile"包含它 我怎么知道哪个是正确的?谢谢

最佳答案

根据您是要链接 32 位还是 64 位可执行文件,您需要/usr/lib32/nvidia-352/libGL.so.352.63 或/usr/lib/nvidia-352/libGL.so.352.63。当链接器没有找到 -lGL 时,它正在寻找 libGL.a 或 libGL.so..

另外,你只需要用-L指定目录,比如-L/usr/lib/nvidia-352

最后,即使您可以通过这种方式链接,在运行时仍然找不到库,除非您在运行可执行文件之前设置 LD_LIBRARY_PATH,或者如果您添加 -Wl,-rpath,/usr/lib/nvidia-352 也添加到链接命令(后者会将路径嵌入到可执行文件中)。

关于linux - Q :/usr/bin/ld: cannot find -lGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851124/

相关文章:

linux - bash sh 差异,脚本转换

c++ - 如何使用 C++ (ubuntu) 连接到 MySQL 数据库

linux - 如何在新的 netlink 系列中使用 sockets netlink

linux - 为什么 kthread 有 pid 2 而 systemd 有 PID 1?

javascript - 获取所有平台上所有驱动器的已用/可用磁盘空间

html - 如何在 Ubuntu 上的 VS Code 中格式化 HTML 代码?

linux - systemd-path 服务不工作

c -/proc 文件系统挂起我的系统

tomcat - ubuntu lucid 上的 solr-tomcat 包

ubuntu - 如何在 AWS ec2 中使用 chromedriver(python)?