2014-08-28 11 views
6

Sto costruendo V8 e per impostazione predefinita si costruisce come un archivio "sottile", in cui i file .a contengono semplicemente puntatori ai file oggetto sul tuo file system invece di contenere i file oggetto stessi. Vedi man ar per i dettagli.Trasforma l'archivio sottile in uno normale

Voglio essere in grado di mettere questa libreria in un posto centrale in modo che altre persone possano collegarsi ad essa, e ovviamente sarebbe molto più facile fornire un normale file di archivio invece di fornire un gruppo di file oggetto.

Come posso prendere gli archivi sottili prodotti dalla build e trasformarli in quelli normali? Suppongo che sarebbe semplice come enumerare i file oggetto nell'archivio sottile e ricostruire un archivio usando quelli, ma non so quale comando possa essere usato per elencare i file oggetto dell'archivio.

risposta

17

Dopo alcune ricerche aggiuntive, è possibile utilizzare ar -t per enumerare i file oggetto in un archivio, quindi dopo si tratta semplicemente di fornire quell'elenco a ar come si farebbe normalmente durante la creazione di un archivio.

Il seguente script gestito questo per tutte le librerie in una sola volta:

for lib in `find -name '*.a'`; 
    do ar -t $lib | xargs ar rvs $lib.new && mv -v $lib.new $lib; 
done