# Kernel will immer komplett neu compiliert werden

## doedel

Hi,

ich sitze da seit gestern Abend verzweifelnd dran und bekomms nicht raus, aber vielleicht fehlt mir ja nur einfach das richtige Suchwort oder ich bin blind...

Ich compiliere einen 2.6.35.4 Kernel für Arch AVR32 und selbst bei den kleinsten Änderungen wird komplett alles wieder compiliert. Jedesmal wieder etwa 35 Minuten warten. *grrr*

Host-Linux sind Gentoo und Debian, sowie auf dem Laptop noch ubuntu. Die Cross-Toolchain hab ich zuerst selbst gebaut gehabt mit gcc-4.6.1, dann hab ich die von buildroot genommen (4.2.4), was aber glaub ich nichts zur Sache tut, da das 100%ig nur irgend ein Einstellung am Make-System des Kernels ist.

Ich war mir zuerst auch nicht ganz sicher, wo posten, aber ich denke, hier passt es doch rein, da das ja auf PC, Mac, ARM, ... sonstwo genauso sein kann und nicht ARCH-spezifisch oder Distributionsspezifisch ist.

Ich hoffe ihr könnt mir da weiterhelfen.

----------

## mv

Was heißt "kleinste Änderung": Änderung in einer einzelnen .c-Datei oder in der Kernel-Config? Letzteres ist meistens keine kleine Änderung, da sie Header-Files und damit implizit häufig alle .c-Files betrifft.

----------

## doedel

In der Config, nicht am Quellcode, da schraub' ich nur mit Modulen herum.

Ich hab z.B. Fuse nicht drin und mach es dann zum Modul -> Komplett alles wieder compilieren

Dann nehm ich es raus -> komplett alles

Dann wieder rein -> komplett alles

Jedesmal als hätte ich make clean gemacht. Einfach nur total nervig. Ich hock hier seit gestern Abend dran und hab noch nichmal nen eigenen Kernel auf dem Board gestartet bekommen, weil hier und da noch was fehlt. Um zu sehen wie weit er kommt, kann ich jedesmal 35 Minuten compilieren.

//edit:

Grade ausprobiert:

make clean

make menuconfig

make  # komplett, wie gewollt durch make clean vorher

make menuconfig

make # komplett ohne irgendwas gemacht zu haben

make

make # sagt mir image ready und stoppt mit compilieren.

----------

## mv

 *doedel wrote:*   

> Ich hab z.B. Fuse nicht drin und mach es dann zum Modul -> Komplett alles wieder compilieren
> 
> Dann nehm ich es raus -> komplett alles
> 
> Dann wieder rein -> komplett alles

 

Fuse verändert die Filesystem-Headers. Die werden schon von fast allen Sourcen included. Von daher erschiene mir das noch normal. Aber ...

 *Quote:*   

> make menuconfig
> 
> make  # komplett, wie gewollt durch make clean vorher
> 
> make menuconfig
> ...

 

... das ist nicht normal. Oder verändert Menuconfig doch die Filestamps der Header-Files, auch wenn Du nichts machst (Ich benutze neuerdings immer nconfig...).

Als Abhilfe kanns Du es ja mal mit ccache versuchen.

----------

## doedel

 *mv wrote:*   

>  *doedel wrote:*   Ich hab z.B. Fuse nicht drin und mach es dann zum Modul -> Komplett alles wieder compilieren
> 
> Dann nehm ich es raus -> komplett alles
> 
> Dann wieder rein -> komplett alles 
> ...

 

Fuse war nur ein Beispiel und ändert allerhöchsens die Teile des Kernels, die davon wissen müssen. Aber es wird WIRKLICH KOMPLETT ALLES von Grund auf, was nicht sein darf. Ich bin hier kurz vorm ausrasten.

ccache bringts auch nur auf 12 Minuten runter, ich kann doch nich jedesmal 15 Minuten ein Rauchen gehen, bin hier auf Arbeit...

----------

## Christian99

wenn du auf arbeit bist, hab ich nen besseren vorschlag für dich, außer rauchen: http://xkcd.com/303/

----------

## Max Steel

Meine jüngste Beobachtung ist das er auch dann alles neu baut wenn man ein make -p aufs linux Verzeichnis loslässt.

Obwohl die Timestamps an und für sich erhalten bleiben.

Das er allerdings bei 2 aufeinanderfolgenden make alles neu baut, habe ich hier bei mir auch nicht erkennen können.

----------

## doedel

 *Max Steel wrote:*   

> Das er allerdings bei 2 aufeinanderfolgenden make alles neu baut, habe ich hier bei mir auch nicht erkennen können.

 

Das tut er ja dann nicht, nur wenn zwischendrin noch einmal menuconfig kommt, ob sich was ändert oder nicht.

----------

