2013-07-09 18 views
5

Ich habe Fedora 19 x86_64 auf meinem PC frisch installiert. Ich schrieb ein einfaches OpenGL-Programm, konnte es aber nicht kompilieren.überspringen inkompatibel libGL.so

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 

Ich habe MesaGL und andere Bibliotheken an Ort und Stelle (d. H./Usr/lib) dann, was ist los?

+0

Haben Sie zusätzliche GL-Bibliotheken installiert, vielleicht über eine ATI- oder NVIDIA-Grafiktreiberinstallation? – JonnyRo

+0

Ja, ich habe ATI Catalyst Drivers v 13.6 beta installiert. –

+0

Die dunkle Seite der NVIDIA- und ATI-Installer ist, dass sie die GL-Bibliotheken ERSETZEN. – JonnyRo

Antwort

1

Das Problem ist behoben.

I entfernt ATI Catalyst Treiber v13.6 Beta von "aticonfig --uninstall" NEUSTART kompiliert das Programm mit dem gleichen Befehl ausführen, und es war erfolgreich :)

Jetzt ich neu installiert ATI Catalyst Treiber v13.6 beta REBOOT und kompilieren Sie das Programm erneut, Es baut ERFOLGREICH !!

Sie wissen nicht, was los war, aber ich habe jetzt OpenGL arbeiten :)

+1

Ja. Es passiert – JonnyRo

+0

Danke. Deinstallation und Neuinstallation des ATI-Treibers funktionierte für mich. – edwardtoday

1

Es gibt Warnungen über inkompatible Versionen von libGL und auch über inkompatible GCC-Bibliotheken. Ich denke, Sie haben möglicherweise eine 32-Bit-Version von gcc auf einem 64-Bit-Betriebssystem installiert. Versuchen Sie

file -L `which gcc` 

, um dies zu überprüfen.

+0

/usr/lib64/ccache/gcc –

+0

Das ist die Ausgabe des Befehls "what", aber nicht die ganze Pipeline, die ich gezeigt habe, die etwas mehr wie "64-Bit ELF ausführbare Datei" sagen sollte –

+0

meine schlechte,/usr/lib64/ccache/gcc: symbolische Verbindung zu '../../bin/ccache ' –

-2

installieren freeglut-devel: # sudo yum freeglut-devel

5

für mich installieren, war etwas nicht in Ordnung mit die Bibliothek Symlinks:

$ 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 wies /usr/lib/libGL.so bei einem 32-Bit-lib und /usr/lib/libGL.so war ein gebrochener Link. Ich habe die/usr/lib64-Version so korrigiert, dass sie korrekt auf libGL.so.1 zeigt (und die/usr/lib-Version, um auf die 64-Bit-Version zu verweisen), und dies scheint meinen Code kompiliert zu haben.

+0

Ich habe das gleiche Problem, Könnten Sie mir bitte sagen, wie genau Sie die/usr/lib64-Version so korrigiert haben, dass sie korrekt auf libGL.so.1 zeigt? – Dino

+0

Entfernen Sie die fehlerhafte Verknüpfung, erstellen Sie sie neu und zeigen Sie auf die richtige Datei mit "ln -s" – sirbrialliance

Verwandte Themen