GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So bereinigen Sie nur das Ziel in buildroot

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ühren

Im 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.


Linux
  1. So listen Sie Dateien auf, die von einem RPM- oder DEB-Paket in Linux installiert wurden

  2. Wie bekomme ich nur Dateien, die nach einem Date mit Ls erstellt wurden?

  3. Linux-Befehl:Wie findet man nur Textdateien?

  4. Wie füge ich meine eigene Software zu einem Buildroot-Linux-Paket hinzu?

  5. Wie kann ich mit ls nur nicht leere Dateien auflisten?

So finden Sie Dateien unter Linux

So installieren Sie Deb-Dateien (Pakete) auf Ubuntu

Wie man Dateien auf Git aus der Staging-Umgebung entfernt

So zählen Sie die Anzahl der Dateien und Unterverzeichnisse in einem Verzeichnis

So finden Sie Dateien in Debian

So bereinigen Sie unnötige Dateien