Buildroot tiene traccia dell'avanzamento della compilazione con .stamp_xxx in ogni pacchetto build dir.target install è in realtà l'ultima fase per ogni pacchetto. Pertanto, la rimozione del file .stamp_target_installed da ogni directory di build del pacchetto ne causerebbe la reinstallazione nella destinazione
Nell'ultima buildroot, puoi semplicemente fare quanto segue:
rm -rf output/target
find output/ -name ".stamp_target_installed" -delete
rm -f output/build/host-gcc-final-*/.stamp_host_installed
In alcuni vecchi buildroot, ci sono alcuni altri file in output che tengono traccia della creazione della directory di destinazione con lo scheletro. Citando il messaggio della mailing list, potremmo riassumere quanto segue:
Un "rm -rf output/target &&make" funziona?
Come ha detto Thomas, non funziona. Ma esistono alcuni hack non ufficiali:
- rimuovi
build/.root
costringerà a reinstallare lo scheletro- rimuovi
build/*/.stamp_target_installed
forza la reinstallazione di ogni pacchetto di destinazione- a seconda della tua toolchain, puoi reinstallare libc e co rimuovendo:
stamps/ext-toolchain-installed
(esterno)stamps/ct-ng-toolchain-installed
(ctng)target/lib/libc.so.0
(buildroot)
E poi semplicemente fallo di nuovo.
Ricorda, ci sono un sacco di motivi per cui questi suggerimenti potrebbero fare cose sbagliate. L'unico modo ufficiale attuale per ricostruire il target è "make clean".
Buildroot ha obiettivi make speciali per ripulire la directory di build per pacchetti specifici, ma questo non tocca nessuno dei file installati. Per citare il manuale dell'utente:
Quando un pacchetto viene rimosso dalla configurazione, Buildroot non fa niente di speciale. Non rimuove i file installati da questo pacchetto dal filesystem root di destinazione o dalla toolchain sysroot. Per eliminare questo pacchetto è necessaria una ricostruzione completa. Tuttavia, in genere non è necessario che questo pacchetto venga rimosso in questo momento:puoi attendere la prossima pausa pranzo per riavviare la build da zero.
Detto questo, puoi eliminare i file di compilazione per un pacchetto specifico eseguendo make <PKG-NAME>-dirclean
. Ad esempio, se volessi eliminare i file di build per i2c-tools
, eseguirei make i2c-tools-dirclean
. L'<PKG-NAME>-dirclean
target esegue semplicemente un rm -rf
sul output/build/<PKG-NAME>
directory. Questo non rimuoverà i file installati da output/target/
. Se vuoi rimuovere i file dal tuo rootfs senza una ricostruzione completa, va bene - puoi semplicemente andare in output/target/
, rm
i file che non desideri più, quindi esegui make
per rigenerare le tue immagini finali. Assicurati che anche la configurazione di Buildroot non sia impostata per ricostruire e installare il pacchetto che stai tentando di rimuovere.