Linux 15.070 Themen, 107.540 Beiträge

NVIDIA-Treiber kompilieren

format c: / 1 Antworten / Flachansicht Nickles

Ich habe Mandrake 9.0 und eine Geforce2 MX:


möchte OpenGL haben:


vor dem Compilieren kommt aber eine Fehlermeldung "Falsche Compilerversion"


Was kann ich da tun?


- - Unten ist ein Auszug aus der NVIDIA-Readme:


Frage: Das Kompilieren des NVdriver Kernelmoduls erzeugt diese Fehlermeldung.


Sie haben wahrscheinlich das NVdriver Kernelmodul mit einen Compiler kompiliert,


der nicht mit dem übereinstimmt, der für das Kompilieren des Running Kernel


verwendet wurde. Das kann völlig in Ordnung sein, kann jedoch auch zu


unvorhergesehenen Ereignissen und Systemabstürzen führen.


Wenn Sie wissen, was Sie tun und diese Prüfung umgehen möchten, können Sie dies


durch die Einstellung von IGNORE_CC_MISMATCH erreichen.


Setzen Sie in allen anderen Fällen die CC Umgebungsvariable auf den Namen des


Compilers, der zur Kompilierung des Kernels verwendet wurde.


Antwort: Sie sollten das NVdriver Kernelmodul mit der gleichen Compilerversion


kompilieren, die zur Kompilierung Ihres Kernels eingesetzt wurde. Einige Linux


Kernel Datenstrukturen sind von der gcc Version abhängig, die bei dessen


Kompilierung verwendet wurden, z.B. in include/linux/spinlock.h:


...


* Die meisten gcc Versionen haben einen üblen Bug mit leeren Initialisierern.


*/


#if (__GNUC__ > 2)


typedef struct { } rwlock_t;


#define RW_LOCK_UNLOCKED (rwlock_t) { }


#else


typedef struct { int gcc_is_buggy; } rwlock_t;


#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }


#endif


Wird der Kernel mit gcc 2.x kompiliert aber gcc 3.x wird verwendet, wenn die


geöffnete Datei im NVdriver erstellt werden (oder umgekehrt), variiert die Größe


von rwlock_t und Dinge wie ioremap schlagen fehl.


Wenn Sie checken möchten, welche Version zur Kompilierung Ihres Kernels


verwendet wurde, überprüfen Sie die Ausgabe von:


cat /proc/version


Wenn Sie checken möchten, welche gcc Version in Ihrem$PATH verwendet wurde,


überprüfen Sie die Ausgabe von:


gcc -v

bei Antwort benachrichtigen
polytaen format c: „NVIDIA-Treiber kompilieren“
Optionen

Hi format,
beim nächsten posten bitte weniger Leerzeilen. Das wäre nett.
Also was Dir das Ding sagen will ist, dass dein Kernel mit einem anderen gcc-Kompiler übersetzt wurde, als der der gerade bei dir installiert ist und zum kompilieren irgendwelcher Sachen (also auch des NVIDIA-Treibers) genutzt wird. Das kann zu Problemen führen.
1.) Einfachste Lösung: Kernel neu bauen, mit eben deiner aktuellen gcc-Version.
2.) Die gcc-Version installieren, mit der dein Kernel kompiliert wurde.
3.) auf die rpms von www.nvidia.de warten.

Ich würde Dir Möglichkeit 1 empfehlen, so mache ich das immer. ICh habe auch das "overrulen" ausprobiert, aber das hatte nicht viel effekt, bzw. hat gar nichts gebracht.

Warum sind die Ausgaben von
cat /proc/version und
gcc -v nicht hier?
Die koennen Dir eben sagen, welche gcc-Version Du brauchst und welche Du hast.

Bis denne
poly

-      .---.        .----------     /     \  __  /     ------    / /     \(  )/    -----   //////   ' \/ `   ---  //// / // :    : --- // /   /  /`    '--//          //..\\       ====MM====MM====           '//||\\`
bei Antwort benachrichtigen