komplette redit:
Sie könnten den Make-Prozess in der Kernel-Quelle ändern
-n, --just-print, --dry-run, --recon
Das Nettoergebnis dieses zu verwenden ist, dass die compil oder irgendeine ausführbare Datei wird nie aufgerufen. Es fake es nur und sagt Ihnen, was es tun würde.
Optionen und grep die Dateien daraus, ohne die Quelle zu erstellen. Dies könnte so einfach sein, wie die MAKE-Umgebung in der Shell zu setzen, um die obigen Optionen zu verwenden. Dann greife einfach alle Compiler-Befehle aus, die .c- und .h-Dateien beinhalten. Laden Sie die Kernel-Quelle für 2.6.29.2 herunter, um einen Blick darauf zu werfen, wie Sie dies tun können. Edit zu kommen.
Glück
Beitrag zurück, wie Sie auf bekommen. Vielleicht posten Sie das Shell-Skript! :)
Followup:
Zeile 13 der 2.6.29.2 Kernel Source-Code enthält in /2.6.19.2/Makefile
# Do not:
# o use make's built-in rules and variables
# (this increases performance and avoids hard-to-debug behaviour);
# o print "Entering directory ...";
MAKEFLAGS += -rR --no-print-directory
# We are using a recursive build, so we need to do a little thinking
# to get the ordering right.
bearbeiten MAKEFLAGS
Variable die dryrun Flags umfassen sollte können Sie die Ausgabe einer bestimmten make-Konfiguration speichern und dann später grep. ala machen> save.txt
änderte ich meine zu
MAKEFLAGS += -rR --no-print-directory --just-print
Zum Beispiel (Könnte viel besser sein):
[[email protected] linux-2.6.29.2]$ \
make > build_out.txt; grep -o -E "[a-zA-Z0-9_-]+\.[ch]" build_out.txt
Nicht perfekt, aber arbeitete in einem hackish Weg für mich, und sollte mach dich auf den Weg. Der gleiche grundlegende Prozess wird hoffentlich nach einem Blind-make mit einem konfigurierten Kernel angewendet.
Warnung Ohne architekturspezifischen Werkzeugketten beizubehalten oder auf der Zielarchitektur unterscheidet sie einige der ASM und Architektur bestimmten Dateien Stellen laufen lassen zu einem wahren zu bauen.
bearbeiten von Kommentar
die ld Versagen zu unterdrücken, müssen Sie den folgenden Abschnitt (oder ähnlich) finden in Ihrer Kernel-Datei zu machen.
# Make variables (CC, etc...)
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
Sie müssen die Konfigurationsschritte ausführen, um die Quelle zu konfigurieren, bevor Sie die Quelldateien in den vorherigen Schritten verwendet aufzuzählen versuchen (Rohrleitungen und greppen von Trockenlauf), so dass Sie Ihre Änderungen in Makefile.enum
tun könnte und Verwenden Sie das, nachdem Sie die normalen Konfigurationsschritte ausgeführt haben (unabhängig von der Architektur müssen einige Dateien vom Typ config.h generiert werden.) Holen Sie die Kernel-Quelle an den Punkt, an dem Sie gerade eine Kompilierung durchführen möchten, Module und alle. Wütend!
Jetzt, wenn Sie Ihre Fake-Make tun, um die Quelldateien aufzuzählen, post Kernel-Quellkonfiguration (die die Treiber/Module, was auch immer) LD LD wird fehlschlagen, wie Sie entdeckt. Zeichen '-' Sie können LD aus dem
LD = $(CROSS_COMPILE)ld
zu
LD = -$(CROSS_COMPILE)ld
Hinweis das ändern. Dies weist das Makefile an, Warnungen zu ignorieren. Offensichtlich ist das, was Sie versuchen, ungewöhnlich, aber ziemlich cool :) Weitere Fehler können unterdrückt werden, indem Sie den Makefile-Abschnitt finden und die ausgeführten Befehle anpassen. Ich schlage vor, dass Sie sehr freundlich mit Makefiles werden, da Sie möglicherweise IF-Anweisungen später ändern müssen. Wenn Sie alles aussortiert haben, müssen Sie eine ‚stumme‘ Make-Datei, die die .c-Dateien ausspucken wird, so dass Sie
make | grep -E "[a-zA-Z0-9_-]+\.[ch]"
oder was auch immer tun.
Ich habe auch einen coolen Vorschlag für die Validierung Ihrer Ergebnisse ... tatsächlich den Kernel bauen ... aber Linux inotify API verwenden (Sie können die Python-Bindungen hier http://pyinotify.sourceforge.net/ bekommen) und auf Dateisystemereignisse im Kompilierfenster (z als .c-Dateien, die von gcc gelesen werden). Dann vergleiche das mit deiner Liste aus dem 'dummen' Makefile.
Ok, ich hoffe, das ist nicht zu viel von einer Waffel!
Gehen Sie und lesen Sie die Linux-Kernel-Makefiles ;-) – lothar
das ist irgendwie lustig ... :-) – LB40
Komisches Potenzial beiseite für RTFMF. Ich denke, das ist eine interessante Frage! –