Buildroot verfolgt den Build-Fortschritt mit .stamp_xxx in jedem Paket-Build-Verzeichnis. Die Zielinstallation ist eigentlich die letzte Stufe für jedes Paket. Das Entfernen der Datei .stamp_target_installed aus jedem Paketerstellungsverzeichnis würde also zu einer Neuinstallation auf target
führenIm neuesten Buildroot können Sie einfach Folgendes tun:
rm -rf output/target
find output/ -name ".stamp_target_installed" -delete
rm -f output/build/host-gcc-final-*/.stamp_host_installed
In einigen älteren Buildroots gibt es ein paar andere Dateien in der Ausgabe, die die Erstellung des Zielverzeichnisses mit dem Skelett verfolgen. Unter Berufung auf die Nachricht der Mailingliste könnten wir Folgendes zusammenfassen:
Funktioniert "rm -rf output/target &&make"?
Wie Thomas sagte, es funktioniert nicht. Aber es gibt einige inoffizielle Hacks:
- Entfernen Sie
build/.root
erzwingt die Neuinstallation von Skeleton- Entfernen Sie
build/*/.stamp_target_installed
Neuinstallation jedes Zielpakets erzwingen- abhängig von Ihrer Toolchain können Sie libc und Co neu installieren, indem Sie Folgendes entfernen:
stamps/ext-toolchain-installed
(extern)stamps/ct-ng-toolchain-installed
(ctng)target/lib/libc.so.0
(buildroot)
Und dann machen Sie einfach nochmal make.
Denken Sie daran, es gibt eine Menge Gründe, warum diese Tipps falsche Dinge bewirken können. Der einzig offizielle Weg, ein Ziel neu aufzubauen, ist "make clean".
Buildroot hat spezielle Make-Ziele, um das Build-Verzeichnis für bestimmte Pakete zu bereinigen, aber dies berührt keine der installierten Dateien. Um das Benutzerhandbuch zu zitieren:
Wenn ein Paket aus der Konfiguration entfernt wird, macht Buildroot nichts Besonderes. Die von diesem Paket installierten Dateien werden nicht aus dem Ziel-Root-Dateisystem oder aus der Toolchain sysroot entfernt. Eine vollständige Neuerstellung ist erforderlich, um dieses Paket loszuwerden. Im Allgemeinen müssen Sie dieses Paket jedoch nicht unbedingt sofort entfernen:Sie können auf die nächste Mittagspause warten, um den Build von Grund auf neu zu starten.
Allerdings können Sie die Build-Dateien für ein bestimmtes Paket löschen, indem Sie make <PKG-NAME>-dirclean
ausführen . Zum Beispiel, wenn ich die Build-Dateien für i2c-tools
löschen wollte , würde ich make i2c-tools-dirclean
ausführen . Die <PKG-NAME>-dirclean
target führt einfach einen rm -rf
aus auf der output/build/<PKG-NAME>
Verzeichnis. Dadurch werden die installierten Dateien nicht von output/target/
entfernt . Wenn Sie die Dateien aus Ihrem rootfs ohne vollständigen Neuaufbau entfernen möchten, ist das in Ordnung - Sie können einfach zu output/target/
gehen , rm
die Dateien, die Sie nicht mehr benötigen, und führen Sie dann make
aus um Ihre endgültigen Bilder zu regenerieren. Stellen Sie sicher, dass Ihre Buildroot-Konfiguration auch nicht so eingestellt ist, dass das Paket, das Sie entfernen möchten, neu erstellt und installiert wird.