linux-l: Warnung vor RedHat 7.0

Jens Dreger jens.dreger at physik.fu-berlin.de
Mo Okt 2 10:04:22 CEST 2000


On Sun, Oct 01, 2000 at 05:28:26PM +0200, Guido Seifert wrote:
> > Ernstaft: was ist denn das fuer eine Aussage ? Welcher Kernel ?
> > Original 2.2.16 kompiliert bei meinem Redhat 7.0 jedenfalls "raus aus
> > der Box".

Was redet der denn da ?

Ok, nehme alles zurueck und behaupte das Gegenteil. Hatte mich in der
Maschine vertan. Kann ja mal passieren...
 
> Nun, ich habe versucht einen original 2.2.17 zu kompilieren.
> Nach einer ungewoehnlich grossen Zahl von Warnungen brach der
> Prozess dann mit folgender Fehlermeldung ab:
> 
> checksum.S:231: badly punctuated parameter list in #define
> checksum.S:237: badly punctuated parameter list in #define

Richtig. Passiert bei mir auch. 

> Ich erwarte ja nicht, dass eine Distribution voellig fehlerfrei ist,
> aber wenn es wegen irgendeines experimentellen Compilers nicht mal
> moeglich ist einen Kernel zu kompilieren, dann werde ich richtig
> sauer. Das haette wirklich vor der Pressung auffallen muessen.

Das _ist_ vor der Pressung aufgefallen und deshalb gibt es den
(Trommelwirbel):

  *** kernel gcc = kgcc ***

--------------8<---------------------
[root at w3 /]# rpm -qi kgcc
[...]
Description :
The kgcc package contains the GNU C Compiler. It is based on egcs
1.1.2. You'll need this package in order to compile the Linux kernel.
-------------8<--------------------

Damit der dann auch automatisch benutzt wird, hat man im Makefile
beim mitgelieferten kernel-source die Zeile

  CC      =$(CROSS_COMPILE)gcc -D__KERNEL__ -I$(HPATH)

durch

  CC      :=$(shell if which $(CROSS_COMPILE)kgcc > /dev/null 2>&1; 
	    then echo $(CROSS_COMPILE)kgcc; else echo $(CROSS_COMPILE)
	    gcc; fi) -D__KERNEL__ -I$(HPATH)

ersetzt.

Das steht natuerlich bei einem originalen kernel-source nicht so drin,
woraufhin gcc benutzt wird, und der ist zu neu. Fragt sich, warum die
Leute bei Redhat nicht make so gepatched haben, dass die Zeile
automatisch ins Makefile eingefuegt wird, wenn make zu erkennen
glaubt, dass es sich um eine Kernel-Kompilation handelt. Wenn schon,
denn schon ;-)

Also: aendere die CC= Zeile im Makefile und alles wird gut.
Habe mit obiger Aenderung testweise 2.2.16, 2.2.17 und 2.4.0-test8 kompiliert.

> Hast Du vielleicht den compat-egcs installiert?

Ich habe alles installiert. Ist ja erstmal nur zum Test.

> Ich habe es nicht und sehe auch nicht ein, warum ich mehrere
> C-Compiler installieren soll.

Hast Du ja schon. Siehe oben.

> Wenn RedHat entschieden hat, dass in Zunkunft der 2.96 RedHats
> Native-Compiler ist, sollen die sich vorher ueber die Konsequenzen
> klar sein.

Ich stimme voll und ganz mit Dir ueberein, dass das die zweitbeste
Idee war. Es kommt naemlich noch hinzu, dass sie
/usr/include/{asm,linux} jetzt nicht mehr als links nach
/usr/src/linux/include/{asm,linux} angelegt haben, sondern die
includes direkt nach /usr/include kopiert haben. Schnappsidee, wuerde
ich sagen. Wenn Du also 2.2.17 kompilierst, musst Du vorher die links
wieder herstellen, sonst arbeitest Du fortan mit den falschen
kernel-headern.

Das alles fuehrt dann nur dazu, dass sich rumspricht, dass man mit
Redhat keinen eigenen kernel kompilieren kann...

Gruss,

Jens. 



Mehr Informationen über die Mailingliste linux-l