2014-08-28 26 views
6

Buduję V8, a domyślnie buduje się jako "cienkie" archiwum, gdzie pliki .a zawierają po prostu wskaźniki do plików obiektów w systemie plików, zamiast zawierać same pliki obiektów. Aby uzyskać szczegółowe informacje, patrz man ar.Zamień cienkie archiwum w zwykłe

Chcę móc umieścić tę bibliotekę w centralnym miejscu, tak aby inne osoby mogły do ​​niej linkować, a oczywiście byłoby znacznie łatwiej dostarczyć zwykły plik archiwum, zamiast dostarczać gaggle plików obiektowych.

Jak wziąć cienkie archiwa wykonane przez kompilację i przekształcić je w zwykłe? Zakładam, że byłoby to tak proste, jak wyliczanie plików obiektów w cienkim archiwum i przebudowywanie archiwum za pomocą tych, ale nie wiem, jakie polecenie można użyć do wyświetlenia plików obiektów archiwum.

Odpowiedz

17

Po przeprowadzeniu dodatkowych badań, można użyć ar -t do wyliczenia plików obiektów w archiwum, więc jest to po prostu kwestia dostarczenia tej listy do ar, jak zwykle podczas tworzenia archiwum.

Poniższy skrypt obchodzić to dla wszystkich bibliotek na raz:

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