STRIP(1) Narzedzia programistyczne GNU STRIP(1) NAZWA strip - usuwa symbole i inne dane z plikow obiektowych SKLADNIA 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] [--plugin nazwa] [-v |--verbose] [-V|--version] [--help] [--info] plik-obiektowy... OPIS GNU strip usuwa wszystkie symbole z plikow obiektowych plik-obiektowy. Lista plikow obiektowych moze zawierac archiwa. Podany musi byc 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 sposob uzycia strip z wiersza polecen i konczy prace programu. --info Wyswietla liste wszystkich dostepnych architektur i formatow plikow 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 Zastepuje plik-obiektowy plikiem w formacie wyjsciowym nazwa-bfd. -R nazwa-sekcji --remove-section=nazwa-sekcji Oprocz sekcji ktore normalnie sa usuwane, usuwa z pliku wyjsciowego takze kazda sekcje o nazwie nazwa-sekcji. Opcja ta moze byc podana wiecej niz raz. Prosze zauwazyc, ze jej nieodpowiednie uzywanie moze spowodowac, ze plik obiektowy bedzie bezuzyteczny. Nazwa-sekcji moze sie konczyc znakiem dopasowania *. W takim przypadku zostana usuniete sekcje o nazwach zaczynajacych sie od nazwy-sekcji. Jesli pierwszym znakiem nazwy-sekcji jest znak wykrzyknika (,,!"), to pasujace sekcje nie beda usuwane, nawet jesli poprzednie uzycie opcji --remove-section w tej samej linii polecen spowodowaloby ich usuniecie. Na przyklad: --remove-section=.text.* --remove-section=!.text.foo usunie wszystkie sekcje pasujace do wzorca ,,.text.*", z wyjatkiem sekcji ,,.text.foo". --keep-section=wzorzec-sekcji Przy usuwaniu sekcji z pliku wyjsciowego, pozostawia sekcje pasujace do wzorca-sekcji. --remove-relocations=wzorzec-sekcji Usuwa z pliku wynikowego relokacje w kazdej sekcji pasujacej do wzorca-sekcji. Opcja ta moze byc podana wiecej niz raz. Prosze zauwazyc, ze jej nieodpowiednie uzywanie moze spowodowac, ze plik obiektowy bedzie bezuzyteczny. Wzorzec-sekcji moze zawierac znaki dopasowania. Na przyklad: --remove-relocations=.text.* usunie wszystkie relokacje z wszystkich sekcji pasujacych do wzorca ,,.text.*". Jesli pierwszym znakiem wzorca-sekcji jest znak wykrzyknika (,,!"), to relokacje nie beda usuwane z pasujacych sekcji, nawet jesli poprzednie uzycie opcji --remove-relocations w tej samej linii polecen spowodowaloby usuniecie relokacji. Na przyklad: --remove-relocations=.text.* --remove-relocations=!.text.foo usunie wszystkie relokacje z sekcji pasujacych do wzorca ,,.text.*", z wyjatkiem relokacji w sekcji ,,.text.foo". --strip-section-headers Usuwa naglowki sekcji. Opcja jest przeznaczona do plikow 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 zawartosc wszystkich sekcji DWARF .dwo, pozostawiajac pozostale sekcje i wszystkie symbole. Wiecej informacji mozna znalezc w opisie tej opcji w rozdziale objcopy. --strip-unneeded Usuwa wszystkie symbole, ktore nie sa potrzebne do przetwarzania relokacji, oprocz symboli debugowania i sekcji, usuwanych przez --strip-debug. -K nazwa-symbolu --keep-symbol=nazwa-symbolu Podczas usuwania symboli zachowuje symbol nazwa-symbolu, nawet jesli normalnie bylby usuniety. Opcja ta moze byc podawana wiecej niz jeden raz. -M --merge-notes --no-merge-notes W przypadku plikow ELF probuje (lub nie probuje) zredukowac rozmiar sekcji typu SHT_NOTE, przez usuniecie zduplikowanych notatek. Domyslnie proba takiej redukcji ma miejsce chyba, ze dochodzi do usuwania informacji debugowania lub DWO. -N nazwa-symbolu --strip-symbol=nazwa-symbolu Usuwa symbol nazwa-symbolu z pliku zrodlowego. Opcja ta moze byc podawana wiecej niz raz i laczona z innymi opcjami usuwania z wyjatkiem -K. -o plik Umieszcza ogolocone wyjscie w pliku bez zastepowania istniejacego pliku. Z tym argumentem podany moze byc tylko jeden argument plik-obiektowy. -p --preserve-dates Zachowuje prawa dostepu i daty modyfikacji pliku. -D --enable-deterministic-archives Dziala w trybie deterministycznym. Podczas kopiowania czlonkow archiwum i zapisywania indeksu archiwum uzywa wartosci zero w polach UID, GID, znacznika czasowego, a takze uzywa jednolitych praw dostepu do wszystkich plikow. Jesli binutils zostalo skonfigurowane z opcja --enable-deterministic-archives, to jest to zachowanie domyslne. Mozna je wylaczyc za pomoca ponizej opisanej opcji -U. -U --disable-deterministic-archives Nie dziala w trybie deterministycznym. Jest to odwrotnosc opcji -D opisanej powyzej: podczas kopiowania czlonkow archiwum i zapisywania indeksu archiwum uzywa wlasciwych wartosci pol UID, GID, znacznika czasowego i praw dostepu do pliku. Jest to zachowanie domyslne, o ile binutils nie zostal skonfigurowany z --enable-deterministic-archives. -w --wildcard Pozwala na uzycie wyrazen regularnych w argumentach nazwa-symbolu pozostalych opcji linii polecen. W dowolnej czesci nazwy symbolu mozna uzyc znaku zapytania (,,?"), gwiazdki (,,*"), odwrotnego ukosnika (,,\") oraz operatora nawiasow kwadratowych (,,[]"). Jesli pierwszym znakiem nazwy symbolu jest wykrzyknik (,,!"), to dla tego symbolu przelacznik ma odwrotne znacznie. Na przyklad: -w -K !foo -K fo* spowoduje, ze strip zachowa tylko te symbole, ktore zaczynaja sie od liter ,,fo", ale usunie symbol ,,foo". -x --discard-all Usuwa symbole nieglobalne. -X --discard-locals Usuwa generowane przez kompilator symbole lokalne (zaczynaja sie zwykle od L lub .). --keep-section-symbols Podczas usuwania symboli z pliku, na przyklad za pomoca --strip-debug lub --strip-unneeded, pozostawia wszystkie symbole okreslajace nazwy sekcji, ktore w przeciwnym wypadku zostalyby usuniete. --keep-file-symbols Podczas usuwania symboli z pliku, na przyklad za pomoca --strip-debug lub --strip-unneeded, pozostawia wszystkie symbole okreslajace nazwy plikow zrodlowych, ktore w przeciwnym wypadku zostalyby usuniete. --only-keep-debug Usuwa symbole z pliku, czyszczac zawartosc wszystkich sekcji, ktore nie zostalyby wyczyszczone przez --strip-debug, ale pozostawiajac sekcje debugowania nienaruszone. W plikach ELF pozostawia to takze sekcje notatek. Uwaga: pozostawiane sa naglowki usunietych sekcji, wlaczajac to ich rozmiary, ale sama zawartosc sekcji jest usuwana. Naglowki sekcji sa pozostawiane po to, zeby inne narzedzia mogly sparowac plik debuginfo z rzeczywisty programem wykonywalnym nawet wtedy, gdy ten program zostal realokowany do innej przestrzeni adresow, Zalozenie jest takie, ze ta opcja bedzie uzywana lacznie z --add-gnu-debuglink, aby utworzyc dwuczesciowy plik wykonywalny. Pierwsza czesc to program binarny pozbawiony zbednych symboli, ktory zajmuje mniej miejsca w pamieci RAM i w pakiecie dystrybucji systemu, a druga czesc zawiera plik informacji debugowania, potrzebny tylko wtedy, gdy wymagane do debugowanie aplikacji. Sugerowany sposob tworzenia tych plikow jest nastepujacy: 1. Link the executable as normal. Assuming that it is called "foo" then... 2. Run "objcopy --only-keep-debug foo foo.dbg" to create a file containing the debugging info. 3. Run "strip --strip-debug foo" to create a stripped executable. 4. Run "objcopy --add-gnu-debuglink=foo.dbg foo" to add a link to the debugging info into the stripped executable. Uwaga: Wybor ,,.dbg" jako rozszerzenia plikow zawierajacych informacje debugowania jest calkowicie przypadkowy. Takze krok ,,--only-keep-debug" jest opcjonalny. Zamiast niego mozna wykonac: 1. Link the executable as normal. 2. Copy "foo" to "foo.full". 3. Run "strip --strip-debug foo". 4. Run "objcopy --add-gnu-debuglink=foo.full foo". Oznacza to, ze plik wskazywany przez --add-gnu-debuglink moze byc pelnym programem wykonywalnym. Nie musi to byc plik tworzony przez opcje --only-keep-debug. Uwaga: ta opcja jest przeznaczona do uzycia tylko z calkowicie skonsolidowanymi plikami. Nie ma ona sensu w przypadku plikow obiektowych, w ktorych informacje debugowania moga nie byc kompletne. Poza tym wlasciwosc gnu_debuglink obecnie dopuszcza wystapienie nazwy tylko jednego pliku zawierajacego informacjami debugowania, czyli nie pozwala na wiele plikow, z ktorych kazdy zawieralby informacje debugowania dla osobnego pliku obiektowego. --plugin nazwa Laduje wtyczke o podanej nazwie, ktora dodaje obsluge dodatkowych typow docelowych. Opcja jest dostepna tylko, jesli program zbudowano z wlaczona obsluga wtyczek. Jesli nie podano --plugin, lecz obsluga wtyczek zostala wlaczona, to strip przechodzi przez pliki w ${libdir}/bfd-plugins w kolejnosci alfabetycznej i uzywa pierwszej wtyczki deklarujacej dany obiekt. Prosze zauwazyc, ze ten katalog przeszukiwania wtyczek nie jest taki, jak uzywany przez opcje -plugin programu ld. Aby strip uzywal wtyczki konsolidarora, musi byc ona skopiowana do katalogu ${libdir}/bfd-plugins. W przypadku kompilacji powstalych w oparciu o GCC, wtyczka konsolidatora ma nazwe liblto_plugin.so.0.0.0. W przypadku Clanga jest to LLVMgold.so. Wtyczka GCC jest zawsze wstecznie kompatybilna z wczesniejszymi wersjami, wiec wystarczy skopiowac jej najnowsza wersje. -V --version Wypisuje numer wersji programu strip. -v --verbose Szczegolowe wyjscie: wyswietla wszystkie zmodyfikowane pliki obiektowe. W wypadku archiwow, strip -v wyswietla wszystkich czlonkow archiwum. @plik Czyta opcje wiersza polecen z podanego pliku. Przeczytane opcje sa wstawiane w miejsce oryginalnej opcji @plik. Jesli plik nie istnieje lub nie moze byc odczytany, ta opcja jest traktowana doslownie i nie jest usuwana. Opcje w pliku sa rozdzielane bialymi znakami. Bialy znak moze wystapic w opcji, jesli cala opcja zostanie ujeta w pojedyncze albo podwojne cudzyslowy. Mozna dodac dowolny znak (wlaczajac w to znak odwrotnego ukosnika), poprzedzajac go znakiem odwrotnego ukosnika. Plik moze rowniez zawierac dodatkowe opcje @plik - w takim przypadku kazda z takich opcji bedzie przetwarzana rekurencyjnie. ZOBACZ TAKZE wpisy info binutils. PRAWA AUTORSKIE Copyright (c) 1991-2026 Free Software Foundation, Inc. Zezwala sie 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 Fundacje Wolnego Oprogramowania, przy czym Sekcjami niezmiennymi sa ,,GNU General Public License" i ,,GNU Free Documentation License", bez tresci przedniej lub tylnej strony okladki. Egzemplarz licencji zamieszczono w sekcji zatytulowanej ,,GNU Free Documentation License". TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Przemek Borys , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . binutils-2.46 9 lutego 2026 r. STRIP(1)