STRIP(1) | Narzędzia programistyczne GNU | STRIP(1) |
NAZWA
strip - usuwa symbole i inne dane z plików obiektowych
SKŁADNIA
strip [-F nazwa-bfd
|--target=nazwa-bfd]
[-I nazwa-bfd |--input-target=nazwa-bfd]
[-O nazwa-bfd |--output-target=nazwa-bfd]
[-s|--strip-all]
[-S|-g|-d|--strip-debug]
[--strip-dwo]
[-K nazwa-symbolu|--keep-symbol=nazwa-symbolu]
[-M|--merge-notes][--no-merge-notes]
[-N nazwa-symbolu |--strip-symbol=nazwa-symbolu]
[-w|--wildcard]
[-x|--discard-all] [-X |--discard-locals]
[-R nazwa-sekcji |--remove-section=nazwa-sekcji]
[--keep-section=wzorzec-sekcji]
[--remove-relocations=wzorzec-sekcji]
[--strip-section-headers]
[-o plik] [-p|--preserve-dates]
[-D|--enable-deterministic-archives]
[-U|--disable-deterministic-archives]
[--keep-section-symbols]
[--keep-file-symbols]
[--only-keep-debug]
[-v |--verbose] [-V|--version]
[--help] [--info]
plik-obiektowy...
OPIS
GNU strip usuwa wszystkie symbole z plików obiektowych plik-obiektowy. Lista plików obiektowych może zawierać archiwa. Podany musi być przynajmniej jeden plik obiektowy.
strip modyfikuje pliki podane w argumencie - nie zapisuje zmodyfikowanych kopii pod innymi nazwami.
OPCJE
- -F nazwa-bfd
- --target=nazwa-bfd
- Traktuje oryginalny plik-obiektowy jak plik obiektowy w formacie nazwa-bfd i zapisuje go w tym samym formacie.
- --help
- Wypisuje sposób użycia strip z wiersza poleceń i kończy pracę programu.
- --info
- Wyświetla listę wszystkich dostępnych architektur i formatów plików obiektowych.
- -I nazwa-bfd
- --input-target=nazwa-bfd
- Traktuje oryginalny plik-obiektowy jako plik o formacie kodu obiektowego nazwa-bfd.
- -O nazwa-bfd
- --output-target=nazwa-bfd
- Zastępuje plik-obiektowy plikiem w formacie wyjściowym nazwa-bfd.
- -R nazwa-sekcji
- --remove-section=nazwa-sekcji
- Oprócz sekcji które normalnie są usuwane, usuwa z
pliku wyjściowego także każdą sekcję o
nazwie nazwa-sekcji. Opcja ta może być podana
więcej niż raz. Proszę zauważyć,
że jej nieodpowiednie używanie może
spowodować, że plik obiektowy będzie
bezużyteczny. Nazwa-sekcji może się
kończyć znakiem dopasowania *. W takim przypadku
zostaną usunięte sekcje o nazwach zaczynających
się od nazwy-sekcji.
Jeśli pierwszym znakiem nazwy-sekcji jest znak wykrzyknika („!”), to pasujące sekcje nie będą usuwane, nawet jeśli poprzednie użycie opcji --remove-section w tej samej linii poleceń spowodowałoby ich usunięcie. Na przykład:
--remove-section=.text.* --remove-section=!.text.foo
usunie wszystkie sekcje pasujące do wzorca „.text.*”, z wyjątkiem sekcji „.text.foo”.
- --keep-section=wzorzec-sekcji
- Przy usuwaniu sekcji z pliku wyjściowego, pozostawia sekcje pasujące do wzorca-sekcji.
- --remove-relocations=wzorzec-sekcji
- Usuwa z pliku wynikowego relokacje w każdej sekcji pasującej
do wzorca-sekcji. Opcja ta może być podana
więcej niż raz. Proszę zauważyć,
że jej nieodpowiednie używanie może
spowodować, że plik obiektowy będzie
bezużyteczny. Wzorzec-sekcji może zawierać
znaki dopasowania. Na przykład:
--remove-relocations=.text.*
usunie wszystkie relokacje z wszystkich sekcji pasujących do wzorca „.text.*”.
Jeśli pierwszym znakiem wzorca-sekcji jest znak wykrzyknika („!”), to relokacje nie będą usuwane z pasujących sekcji, nawet jeśli poprzednie użycie opcji --remove-relocations w tej samej linii poleceń spowodowałoby usunięcie relokacji. Na przykład:
--remove-relocations=.text.* --remove-relocations=!.text.foo
usunie wszystkie relokacje z sekcji pasujących do wzorca „.text.*”, z wyjątkiem relokacji w sekcji „.text.foo”.
- --strip-section-headers
- Usuwa nagłówki sekcji. Opcja jest przeznaczona do plików ELF. Wymusza --strip-all i --merge-notes.
- -s
- --strip-all
- Usuwa wszystkie symbole.
- -g
- -S
- -d
- --strip-debug
- Usuwa tylko symbole debugowania.
- --strip-dwo
- Usuwa zawartość wszystkich sekcji DWARF .dwo, pozostawiając pozostałe sekcje i wszystkie symbole. Więcej informacji można znaleźć w opisie tej opcji w rozdziale objcopy.
- --strip-unneeded
- Usuwa wszystkie symbole, które nie są potrzebne do przetwarzania relokacji, oprócz symboli debugowania i sekcji, usuwanych przez --strip-debug.
- -K nazwa-symbolu
- --keep-symbol=nazwa-symbolu
- Podczas usuwania symboli zachowuje symbol nazwa-symbolu, nawet jeśli normalnie byłby usunięty. Opcja ta może być podawana więcej niż jeden raz.
- -M
- --merge-notes
- --no-merge-notes
- W przypadku plików ELF próbuje (lub nie próbuje) zredukować rozmiar sekcji typu SHT_NOTE, przez usunięcie zduplikowanych notatek. Domyślnie próba takiej redukcji ma miejsce chyba, że dochodzi do usuwania informacji debugowania lub DWO.
- -N nazwa-symbolu
- --strip-symbol=nazwa-symbolu
- Usuwa symbol nazwa-symbolu z pliku źródłowego. Opcja ta może być podawana więcej niż raz i łączona z innymi opcjami usuwania z wyjątkiem -K.
- -o plik
- Umieszcza ogołocone wyjście w pliku bez zastępowania istniejącego pliku. Z tym argumentem podany może być tylko jeden argument plik-obiektowy.
- -p
- --preserve-dates
- Zachowuje prawa dostępu i daty modyfikacji pliku.
- -D
- --enable-deterministic-archives
- Działa w trybie deterministycznym. Podczas kopiowania
członków archiwum i zapisywania indeksu archiwum
używa wartości zero w polach UID, GID, znacznika czasowego,
a także używa jednolitych praw dostępu do wszystkich
plików.
Jeśli binutils zostało skonfigurowane z opcją --enable-deterministic-archives, to jest to zachowanie domyślne. Można je wyłączyć za pomocą poniżej opisanej opcji -U.
- -U
- --disable-deterministic-archives
- Nie działa w trybie deterministycznym. Jest to
odwrotność opcji -D opisanej powyżej: podczas
kopiowania członków archiwum i zapisywania indeksu archiwum
używa właściwych wartości pól UID, GID,
znacznika czasowego i praw dostępu do pliku.
Jest to zachowanie domyślne, o ile binutils nie został skonfigurowany z --enable-deterministic-archives.
- -w
- --wildcard
- Pozwala na użycie wyrażeń regularnych w argumentach
nazwa-symbolu pozostałych opcji linii poleceń. W
dowolnej części nazwy symbolu można
użyć znaku zapytania („?”), gwiazdki
(„*”), odwrotnego ukośnika („\”) oraz
operatora nawiasów kwadratowych („[]”). Jeśli
pierwszym znakiem nazwy symbolu jest wykrzyknik („!”), to
dla tego symbolu przełącznik ma odwrotne znacznie. Na
przykład:
-w -K !foo -K fo*
spowoduje, że strip zachowa tylko te symbole, które zaczynają się od liter „fo”, ale usunie symbol „foo”.
- -x
- --discard-all
- Usuwa symbole nieglobalne.
- -X
- --discard-locals
- Usuwa generowane przez kompilator symbole lokalne (zaczynają się zwykle od L lub .).
- --keep-section-symbols
- Podczas usuwania symboli z pliku, na przykład za pomocą --strip-debug lub --strip-unneeded, pozostawia wszystkie symbole określające nazwy sekcji, które w przeciwnym wypadku zostałyby usunięte.
- --keep-file-symbols
- Podczas usuwania symboli z pliku, na przykład za pomocą --strip-debug lub --strip-unneeded, pozostawia wszystkie symbole określające nazwy plików źródłowych, które w przeciwnym wypadku zostałyby usunięte.
- --only-keep-debug
- Usuwa symbole z pliku, czyszcząc zawartość wszystkich
sekcji, które nie zostałyby wyczyszczone przez
--strip-debug, ale pozostawiając sekcje debugowania
nienaruszone. W plikach ELF pozostawia to także sekcje notatek.
Uwaga: pozostawiane są nagłówki usuniętych sekcji, włączając to ich rozmiary, ale sama zawartość sekcji jest usuwana. Nagłówki sekcji są pozostawiane po to, żeby inne narzędzia mogły sparować plik debuginfo z rzeczywisty programem wykonywalnym nawet wtedy, gdy ten program został realokowany do innej przestrzeni adresów,
Założenie jest takie, że ta opcja będzie używana łącznie z --add-gnu-debuglink, aby utworzyć dwuczęściowy plik wykonywalny. Pierwsza część to program binarny pozbawiony zbędnych symboli, który zajmuje mniej miejsca w pamięci RAM i w pakiecie dystrybucji systemu, a druga część zawiera plik informacji debugowania, potrzebny tylko wtedy, gdy wymagane do debugowanie aplikacji. Sugerowany sposób tworzenia tych plików jest następujący:
- 1.<Skonsoliduj program wykonywalny, jak to się zwykle robi. Zakładając, że jest to nazwane>
- "foo", to...
- 1.<Run "objcopy --only-keep-debug foo foo.dbg" to>
- utworzyć plik zawierający informacje debugowania.
- 1.<Run "objcopy --strip-debug foo" to create a>
- wyczyszczony ze zbędnych sekcji program wykonywalny.
- 1.<Run "objcopy --add-gnu-debuglink=foo.dbg foo">
- aby dodać informacje debugowania do programu wykonywalnego wyczyszczonego ze zbędnych sekcji.
Uwaga: Wybór „.dbg” jako rozszerzenia plików zawierających informacje debugowania jest całkowicie przypadkowy. Także krok „--only-keep-debug” jest opcjonalny. Zamiast niego można wykonać:
- 1. Skonsoliduj program wykonywalny, jak to się zwykle robi.
- 1.<Copy "foo" to "foo.full">
- 1.<Run "strip --strip-debug foo">
- 1.<Run "objcopy --add-gnu-debuglink=foo.full foo">
Oznacza to, że plik wskazywany przez --add-gnu-debuglink może być pełnym programem wykonywalnym. Nie musi to być plik tworzony przez opcję --only-keep-debug.
Uwaga: ta opcja jest przeznaczona do użycia tylko z całkowicie skonsolidowanymi plikami. Nie ma ona sensu w przypadku plików obiektowych, w których informacje debugowania mogą nie być kompletne. Poza tym właściwość gnu_debuglink obecnie dopuszcza wystąpienie nazwy tylko jednego pliku zawierającego informacjami debugowania, czyli nie pozwala na wiele plików, z których każdy zawierałby informacje debugowania dla osobnego pliku obiektowego.
- -V
- --version
- Wypisuje numer wersji programu strip.
- -v
- --verbose
- Szczegółowe wyjście: wyświetla wszystkie zmodyfikowane pliki obiektowe. W wypadku archiwów, strip -v wyświetla wszystkich członków archiwum.
- @plik
- Czyta opcje wiersza poleceń z podanego pliku. Przeczytane
opcje są wstawiane w miejsce oryginalnej opcji @plik. Jeśli
plik nie istnieje lub nie może być odczytany ta opcja
jest traktowana dosłownie i nie jest usuwana.
Opcje w pliku są rozdzielane białymi znakami. Biały znak może wystąpić w opcji, jeśli cała opcja zostanie ujęta w pojedyncze albo podwójne cudzysłowy. Można dodać dowolny znak (włączając w to znak odwrotnego ukośnika), poprzedzając go znakiem odwrotnego ukośnika. Plik może również zawierać dodatkowe opcje @plik - w takim przypadku każda z takich opcji będzie przetwarzana rekurencyjnie.
ZOBACZ TAKŻE
wpisy info binutils.
PRAWA AUTORSKIE
Copyright (c) 1991-2024 Free Software Foundation, Inc.
Zezwala się na kopiowanie, rozpowszechnianie i/lub modyfikowanie tego dokumentu na warunkach Licencji Wolnej Dokumentacji GNU (GNU Free Documentation License) w wersji 1.3 lub jakiejkolwiek nowszej wersji opublikowanej przez Fundację Wolnego Oprogramowania, przy czym Sekcjami niezmiennymi są „GNU General Public License” i „GNU Free Documentation License”, bez treści przedniej lub tylnej strony okładki. Egzemplarz licencji zamieszczono w sekcji zatytułowanej „GNU Free Documentation License”.
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
7 maja 2024 r. | binutils-2.42.0 |