2015-03-19 5 views
8

Ich möchte die Speicherverwaltung des Linux-Kernels lesen und verstehen (insbesondere defrag \ compaction \ migration).Wie kann man den Linux-Kernel für -0 optimieren und kompilieren?

Also, ich schalte die Optimierung für die Größe in .config (mit make menuconfig natürlich) und kompilieren ... Dies lässt mich mit immer noch einen optimierten Kernel.

HINWEIS: Wenn ich Kernel optimiert sage, meine ich, wenn ich gdb verwenden und sagen, es next, dass sie herumspringen werde. Ich will das nicht, ich möchte dem Code Zeile für Zeile folgen können, so wie ich es mit einer einfachen Hallo-Welt tun würde.

Als nächstes bearbeite ich die Makefile und vertausche -O2 mit -O0 und das verursacht Dinge zu brechen.

Ich fand this, aber ich weiß nicht, welche Dateien ich will, weil ich nicht weiß, wie weit das Kaninchenloch geht.

Gibt es eine allgemeinere Option, die ich verwenden kann? Ich verstehe die Konzepte der Speicherverdichtung; Ich möchte jedoch sehen, wo alles passiert und wie es genau passiert.

+0

@EdHeal: Es ist noch nicht April Fools Day. Bitte halten Sie Ihren Kommentar konstruktiv. –

+0

@BenVoigt - IMHO ist es eine blöde Frage und verdient daher und "witzige" Antwort –

+0

@EdHeal thanks ... gibt es eine man-Seite auf die man mich zumindest verweisen kann? – SailorCire

Antwort

4

Sie können den Kernel nicht de-optimieren. Sie könnten in der Lage sein, bestimmte Funktionen de-Optimierung wie folgt aus:

void __attribute__((optimize("O0"))) foo(unsigned char data) { 
    // unmodifiable compiler code 
} 

Aber der Kern als Ganzes erfordert -O2, da der Code selbst mit Annahmen geschrieben wird, dass bestimmte Funktionen in einer bestimmten Art und Weise optimiert werden.

Sorry, aber Sie müssen wirklich die Größe des Kaninchenlochs wissen, das Sie hinuntergehen wollen.

+1

Können wir die Optimierung als "-O1" anstatt "-O0" festlegen? – skytree