Beim Übersetzen von Programmen auf einem System mit NVIDIA Treiber kann man, wenn es dumm läuft auf folgendes Problem stossen:
/usr/X11R6/lib/libGLcore.so.1: undefined reference to `_nv000042gl' /usr/lib/gcc/i586-suse-linux/4.1.2/../../../libGL.so: undefined reference to `_nv000044gl'
Entstanden ist das Problem durch eine unzureichende Abgrenzung zwischen der OpenGL Implementation von MESA und NVIDIA. Es lässt sich vollständig vermeiden, wenn das NVIDIA OpenGL Paket per Paketmanager anstatt manuell eingespielt wird.
nvidia-gfxG01-kmp-default
x11-video-nvidiaG01
Während erstes Paket nur den Treiber (nvidia.ko) enthält, beinhaltet das 2.Paket auch die klassische OpenGL Bibliothek (libGL.so). Der Vorteil dieses Paketes ist, dass alle Teile unter
/usr/lib/X11R6
landen. Die generische OpenGL Implementation eines jeden Linux Systems wird durch MESA bereitgestellt, welches die gleichen (und ein paar mehr) Dateien unter
/usr/lib
bereitstellt. Jede Anwendung kann dann entscheiden, ob es die generische oder die spezielle NVIDIA OpenGL Implementation nimmt – was im Normallfall nicht vorkommt.
Das obige Übersetzungsproblem entsteht nun dadurch, dass man den NVIDIA Treiber manuell installiert, und dabei die OpenGL Implementation nach /usr/lib schreibt. Dadurch ergibt sich in diesem Bereich ein Mix von OpenGL shared objects, die teilweise NVIDIA Code benötigen oder auch nicht.
Bereinigen kann man die Situation durch löschen aller OpenGL Bestandteile in /usr/lib und Neuinstallation des MESA packages.

