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
