Kernel Patch (Intel® Compiler)

last updated: 06/04/2004

 

Troubleshooting FAQ

 

Hier finden Sie Problemlösungen zur Anwendung des Kernel Patches für den Intel® C/C++ Compiler für Linux 8.0.055. Diese beziehen sich auf den Artikel "Aufgedreht - Kernel Tuning" im Linux Magazin 07/04, S. 34ff)

 

Nr. Q/A  
[1] Q Der Intel® Compiler bricht die Übersetzung ab, da die Header-Datei stdarg.h nicht gefunden wird. Was läuft schief?
A Der icc benötigt den zusätzlichen Schalter
-idirafter<intel-installation-dir>/include
zur Lokalisierung von stdarg.h. Der Pfad wird im Toplevel-Makefile aus dem Binärpfad zum Intel® Compiler ermittelt:
INTEL_INC = $(shell which icc | sed -e s:/bin/icc:/include:)
Da which nicht auf allen Shells zur Verfügung steht, tragen Sie bitte im Toplevel-Makefile den Pfad direkt ein, z.B.
INTEL_INC = /opt/intel/compiler80/include
Modifizieren Sie die Angabe gemäß Ihrer Intel® Compiler Installation. Zur generellen Überprüfung der Kommandozeilenparameter des C Compiler Delegates ccd definieren Sie das C-Makro _DEBUG in der Datei ccd.c
#define _DEBUG // in Zeile 1 (ccd.c)
im Unterverzeichnis src des Patch-Archivs (erneutes make && make install nicht vergessen!). Der nächste Übersetzerlauf zeigt für jeden Aufruf des Delegates alle Argumente an.
[2] Q Der Intel® Compiler crashed (SIGSEGV) bei der Übersetzung des ReiserFS (Datei: fs/reiserfs/prints.c. Lösung?
A Der icc legt sich zuweilen "auf die Nase", wenn er auf das Funktionsattribut
__attribute__((noreturn))
trifft. Modifizieren Sie die Datei include/linux/reiserfs_fs.h (diese Modifikation wird zur nächsten Version des Patches hinzugefügt), vorher:
void reiserfs_panic (struct super_block *s, const char *fmt, ...)
__attribute__((noreturn)); /* ... */
nachher:
void reiserfs_panic (struct super_block *s, const char *fmt, ...)
#ifndef __INTEL_COMPILER
__attribute__((noreturn)); /* ... */
#else
;
#endif