Hallo,
im Zusammenhang mit dem Freetz-FW-Bau aus dem SVN taucht immer wieder die Frage auf, was zu tun ist, wenn man noch einmal einen make Vorgang starten will, aber sichergehen muss, dass aus der vorherigen "Sitzung" (make menuconfig und/oder make) nicht noch störende Überreste übriggeblieben sind.
Nun kann man natürlich das ganze Verzeichnis löschen und völlig von vorne mit svn starten, aber das wäre doch übertrieben und ist nicht notwendig.
Da ich selbst (als Linux-Einsteiger) nicht wirklich tief in der Materie des Kompilierens drin bin (und zum tieferen Verständnis evtl. auch nie dahin kommen werde), aber trotzdem gerne (und erfolgreich) FWs bauen kann, möchte ich einmal zusammentragen, welche Varianten des Aufräumens es gibt bzw. was die einzelnen make Aufrufe bedeuten (nicht nur zum Aufräumen). Ein Blick ins Makefile hilft bei der Entwirrung sicherlich weiter, auch wenn ich es bisher noch nicht verstanden habe.
Der aktuelle Stand der Infos findet sich im Wiki unter den Help/FAQs.
Die Infos hier unten werde ich nicht mehr weiterpfelgen, da ich sonst doppelten Aufwand damit habe.
Um die Antworten im Thread besser verstehen zu können und den Zusammenhang nicht zu stören, lasse ich sie aber hier (mit dem altend Stand) setehen.
Ggf. sind einige der u.g. Parameter für Freetz nicht mehr aktuell, was ich mit meinen beschränkten Kenntnissen leider nicht verifizieren kann. Daher bitte ich um entsprechende Rückmeldungen. Danke!
Also fangen wir einmal an (ggf. nicht mehr aktuell - aktuelle Infos im Wiki/FAQs):
1. Aufräumen:
im Zusammenhang mit dem Freetz-FW-Bau aus dem SVN taucht immer wieder die Frage auf, was zu tun ist, wenn man noch einmal einen make Vorgang starten will, aber sichergehen muss, dass aus der vorherigen "Sitzung" (make menuconfig und/oder make) nicht noch störende Überreste übriggeblieben sind.
Nun kann man natürlich das ganze Verzeichnis löschen und völlig von vorne mit svn starten, aber das wäre doch übertrieben und ist nicht notwendig.
Da ich selbst (als Linux-Einsteiger) nicht wirklich tief in der Materie des Kompilierens drin bin (und zum tieferen Verständnis evtl. auch nie dahin kommen werde), aber trotzdem gerne (und erfolgreich) FWs bauen kann, möchte ich einmal zusammentragen, welche Varianten des Aufräumens es gibt bzw. was die einzelnen make Aufrufe bedeuten (nicht nur zum Aufräumen). Ein Blick ins Makefile hilft bei der Entwirrung sicherlich weiter, auch wenn ich es bisher noch nicht verstanden habe.
Der aktuelle Stand der Infos findet sich im Wiki unter den Help/FAQs.
Die Infos hier unten werde ich nicht mehr weiterpfelgen, da ich sonst doppelten Aufwand damit habe.
Um die Antworten im Thread besser verstehen zu können und den Zusammenhang nicht zu stören, lasse ich sie aber hier (mit dem altend Stand) setehen.
Ggf. sind einige der u.g. Parameter für Freetz nicht mehr aktuell, was ich mit meinen beschränkten Kenntnissen leider nicht verifizieren kann. Daher bitte ich um entsprechende Rückmeldungen. Danke!
Also fangen wir einmal an (ggf. nicht mehr aktuell - aktuelle Infos im Wiki/FAQs):
1. Aufräumen:
- make clean
...
- make <Paket>-clean (Quelle):
ruft normalerweise das clean-Target des Source-Makefiles auf. Dieses wird typischerweise alle generierten Dateien (vor allem Object-Dateien, Libraries und ausführbare Programme) löschen.
Ein nachfolgendes make wendet keine geänderten Patches an, sondern erstellt nur die o.g. Object-Dateien, Libraries und ausführbare Programme neu (compilieren).
Z.B. räumt make mc-clean so das Paket "Midnight Commander" (mc) auf.
- make <Paket>-dirclean (Quelle):
löscht das gesamte Verzeichnis des Pakets. Ein nachfolgendes make wird die Quellen neu auspacken, die Patches anwenden, das Paket konfigurieren und dann compilieren.
Nur der letzte Schritt (compilieren) wird nach make <Paket>-clean (s.o.) ausgeführt.
- make common-clean (Quelle):
...
- make common-dirclean (Quelle):
...
- make common-distclean (Quelle):
...
- make dirclean (Quelle):
...
- make distclean (Quelle):
...
- make config-clean-deps (Quelle):
Wenn bei make menuconfig Pakete abgewählt wurden, sind ggfs. noch Shared Libraries ausgewählt, die nicht mehr benötigt werden (dies kann menuconfig nicht automatisch erkennen). Diese kann man dann manuell unter 'Advanced Options'→'Shared Libraries' abwählen - die benötigten lassen sich nicht deaktivieren. Alternativ kann man dies automatisch mittels make config-clean-deps erledigen lassen.
- make kernel-dirclean (Quelle):
löscht den aktuell entpackten Source-Tree des Kernels, um von komplett sauberen Kernel Sourcen zu kompilieren - Alternative(?):
- make kernel-clean (Quelle):
siehe make kernel-dirclean und analog make <Paket>-clean bzw. make <Paket>-dirclean
- make kernel-toolchain-dirclean
löscht den Kernel-Compiler
- make target-toolchain-dirclean (Quelle):
löscht den Compiler für die uClibc und die Binaries (ausführbare Programme)
- make world (Quelle):
Vorraussetzung ist eine Toolchain (siehe Cross-Compiler / Toolchain erstellen). Sollten jemals Probleme mit nicht vorhandenen Verzeichnissen auftauchen, so kann ein make world Abhilfe schaffen. In der Regel sollte das aber nicht nötig sein.
- make kernel-toolchain (Quelle):
kompiliert den Kernel und auch für das target (Fritzbox)
Aus historischen Gründen wurde die Bezeichnung als kernel-toolchain belassen, obwohl damit wie gesagt nicht nur der Kernel gebaut wird, sondern auch Pakete (s.u.).
- make target-toolchain (Quelle):
kompiliert die Pakete für das target (Fritzbox)
- make kernel-menuconfig (Quelle):
Die Konfiguration des Kernels wird danach wieder nach ./make/linux/Config.<kernel-ref> zurückgespeichert.
- make kernel-precompiled (Quelle):
Damit werden der Kernel und die Kernel Module kompiliert.
- make menuconfig (Quelle): Zum Konfigurieren von Freetz kommt das Programm conf/mconf zum Einsatz, welches dem ein oder anderen vielleicht von der Konfiguration des Linux Kernels bekannt ist. Die ncurses Variante mconf kann mit dem Kommando make menuconfig aufgerufen werden.
Eine Hilfe zu den einzelnen Punkten kann übrigens direkt in menuconfig durch Eingabe von "?" aufgerufen werden.
Zuletzt bearbeitet von einem Moderator: