Linux 跳过不兼容的libGL.so

Linux 跳过不兼容的libGL.so,linux,mesa,Linux,Mesa,我刚在电脑上安装了Fedora19 x86_64。 我编写了一个简单的OpenGL程序,但未能编译它 gcc -o quad quad.c -lX11 -lGL -lGLU /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.1/../.. /../libGL.so when searching for -lGL /usr/bin/ld: skipping incom

我刚在电脑上安装了Fedora19 x86_64。 我编写了一个简单的OpenGL程序,但未能编译它

    gcc -o quad quad.c -lX11 -lGL -lGLU
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.1/../..        /../libGL.so when searching for -lGL
    /usr/bin/ld: skipping incompatible /lib/libGL.so when searching for -lGL
    /usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL
    /usr/bin/ld: cannot find -lGL
    collect2: error: ld returned 1 exit status

我已经准备好了MesaGL和其他库(即/usr/lib),那么怎么了?

有关于libGL不兼容版本的警告,也有关于不兼容的GCC库的警告。我认为您可能在64位操作系统上安装了32位版本的gcc。试一试

file -L `which gcc`
检查此问题。

问题已解决

我通过执行“aticonfig--uninstall”删除了ATI Catalyst驱动程序v13.6测试版 重新启动 用相同的命令编译程序,结果成功:)

现在我重新安装了ATI Catalyst驱动程序v13.6 beta版 重新启动并重新编译程序, 它构建成功

不知道出了什么问题,但我现在有OpenGL工作:)

安装freeglut-devel:
#sudo-yum安装freeglut-devel

对于我来说,库符号链接有问题:

$ locate libGL.so | egrep ^/usr | xargs file
/usr/lib/libGL.so:                     symbolic link to `/usr/lib/libGL.so.1'
/usr/lib/libGL.so.1:                   symbolic link to `/usr/lib/libGL.so.1.2'
/usr/lib/libGL.so.1.2:                 symbolic link to `/usr/lib/fglrx/fglrx-libGL.so.1.2'
/usr/lib/fglrx/fglrx-libGL.so.1.2:     ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
/usr/lib64/FGL.renamed.libGL.so.1.2.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=46121ec8b16424a8b65a0cf11c3f9730ae0e49f5, stripped
/usr/lib64/libGL.so:                   broken symbolic link to `libGL.so.1.2.0'
/usr/lib64/libGL.so.1:                 symbolic link to `/usr/lib64/libGL.so.1.2'
/usr/lib64/libGL.so.1.2:               symbolic link to `/usr/lib64/fglrx/fglrx-libGL.so.1.2'
/usr/lib64/fglrx/fglrx-libGL.so.1.2:   ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

So/usr/lib/libGL.So指向一个32位的lib,/usr/lib/libGL.So是一个断开的链接。我修复了/usr/lib64版本,使其正确指向libGL.so.1(以及/usr/lib版本,使其正确指向64位版本),这似乎使我的代码得以编译。

您是否安装了其他GL lib,也许是通过ATI或英伟达图形驱动程序安装?是的,我安装了ATI催化剂驱动程序V 13.6 beta。NVIDIA和ATI安装程序的黑暗面是它们替换GL LIBS。您也运行CACHACE,我将在您解决这个问题之前推荐。它/shouldnt/重要,但我建议限制进程可能中断的点。这是“which”命令的输出,但不是我展示的整个管道,应该说更像“64位ELF可执行文件”my bad,/usr/lib64/ccache/gcc:symbolic link to`../bin/ccache'/usr/lib64/ccache/gcc:ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接(使用共享libs),对于GNU/Linux 2.6.32,BuildID[sha1]=0xCC13840640Fee53799C8E85FFA20DF35843D246,我会在它试图链接的GL库上运行file-L命令,非常想知道输出是什么。谢谢。卸载并重新安装ATI驱动程序确实对我有用。我也有同样的问题,你能告诉我你是如何修复/usr/lib64版本以正确指向libGL.so.1的吗?删除坏链接,然后用
ln-s
指向正确的文件重新创建它。我和你在同一场合,我用你的方式解决了这个问题。但是你知道为什么会这样吗?安装MesaGL后我什么都没做。当我试图编译的时候,它就发生了。