STRIP(1) GNU Development Tools STRIP(1)

x86_64-w64-mingw32-strip - حذف نمادها و متادیتاها از فایل‌های شیء و اجرایی x86_64 MinGW-w64

strip [-F bfdname |--target=bfdname]
[-I bfdname |--input-target=bfdname]
[-O bfdname |--output-target=bfdname]
[-s|--strip-all]
[-S|-g|-d|--strip-debug]
[--strip-dwo]
[-K symbolname|--keep-symbol=symbolname]
[-M|--merge-notes][--no-merge-notes]
[-N symbolname |--strip-symbol=symbolname]
[-w|--wildcard]
[-x|--discard-all] [-X |--discard-locals]
[-R sectionname |--remove-section=sectionname]
[--keep-section=sectionpattern]
[--remove-relocations=sectionpattern]
[--strip-section-headers]
[-o file] [-p|--preserve-dates]
[-D|--enable-deterministic-archives]
[-U|--disable-deterministic-archives]
[--keep-section-symbols]
[--keep-file-symbols]
[--only-keep-debug]
[--plugin name]
[-v |--verbose] [-V|--version]
[--help] [--info]
objfile...

ابزار strip گنو، تمام نمادها را از فایل‌های شیء objfile حذف می‌کند. فهرست فایل‌های شیء می‌تواند شامل بایگانی‌ها نیز باشد. حداقل یک فایل شیء باید مشخص شود.

strip فایل‌های مشخص‌شده در آرگومان‌های خود را درجا ویرایش می‌کند، به‌جای اینکه نسخه‌های تغییریافته را با نام‌های متفاوتی بنویسد.

فایل شیء اصلی objfile را به‌عنوان فایلی با قالب کد شیء bfdname در نظر می‌گیرد و آن را در همان قالب بازنویسی می‌کند.
نمایش خلاصه‌ای از گزینه‌های strip و خروج.
نمایش فهرستی از تمام معماری‌ها و قالب‌های شیء موجود.
فایل شیء اصلی objfile را به‌عنوان فایلی با قالب کد شیء bfdname در نظر می‌گیرد.
جایگزینی objfile با فایلی در قالب خروجی bfdname.
حذف هر بخش با نام sectionname از فایل خروجی، علاوه بر بخش‌هایی که در غیر این صورت حذف می‌شدند. این گزینه می‌تواند بیش از یک بار مشخص شود. توجه داشته باشید که استفاده نامناسب از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند. نویسه عامه‌پسند * می‌تواند در انتهای sectionname قرار گیرد. در این صورت، هر بخشی که با sectionname شروع شود حذف خواهد شد.

اگر نخستین نویسه sectionpattern علامت تعجب (!) باشد، بخش‌های منطبق حذف نخواهند شد، حتی اگر کاربرد قبلی --remove-section در همان خط فرمان دستور حذف آن را داده باشد. به‌عنوان مثال:

--remove-section=.text.* --remove-section=!.text.foo

تمام بخش‌های منطبق با الگوی '.text.*' را حذف می‌کند، اما بخش '.text.foo' را حذف نخواهد کرد.

هنگام حذف بخش‌ها از فایل خروجی، بخش‌های منطبق با sectionpattern را نگه می‌دارد.
حذف اطلاعات بازنشانی (relocations) از فایل خروجی برای هر بخش منطبق با sectionpattern. این گزینه می‌تواند بیش از یک بار مشخص شود. توجه داشته باشید که استفاده نادرست از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند. نویسه‌های عامه‌پسند در sectionpattern پذیرفته می‌شوند. به‌عنوان مثال:
--remove-relocations=.text.*

اطلاعات بازنشانی را برای تمام بخش‌های منطبق با الگوی '.text.*' حذف خواهد کرد.

اگر نخستین نویسه sectionpattern علامت تعجب (!) باشد، بازنشانی‌های بخش‌های منطبق حذف نخواهند شد حتی اگر استفاده قبلی از --remove-relocations در همان خط فرمان موجب حذف آن‌ها می‌شد. به‌عنوان مثال:

--remove-relocations=.text.* --remove-relocations=!.text.foo

تمام بازنشانی‌های بخش‌های منطبق با الگوی '.text.*' را حذف می‌کند، اما بازنشانی‌های بخش '.text.foo' را حذف نخواهد کرد.

حذف سرایندهای بخش‌ها (section headers). این گزینه مختص فایل‌های ELF است و مستلزم فعال شدن --strip-all و --merge-notes می‌باشد.
حذف تمام نمادها.
فقط حذف نمادهای اشکال‌زدایی.
حذف محتوای تمام بخش‌های DWARF .dwo و دست‌نخورده باقی گذاشتن بقیه بخش‌های اشکال‌زدایی و تمام نمادها. برای اطلاعات بیشتر، توضیحات این گزینه را در بخش objcopy مشاهده کنید.
حذف تمام نمادهایی که برای پردازش بازنشانی مورد نیاز نیستند، علاوه بر نمادها و بخش‌های اشکال‌زدایی که توسط --strip-debug حذف می‌شوند.
هنگام حذف نمادها، نماد symbolname را حتی اگر در حالت عادی حذف می‌شد نگه می‌دارد. این گزینه می‌تواند بیش از یک بار مشخص شود.
برای فایل‌های ELF، تلاش برای کاهش اندازه بخش‌های نوع SHT_NOTE از طریق حذف یادداشت‌های تکراری (یا عدم تلاش). حالت پیش‌فرض تلاش برای این کاهش است، مگر اینکه اطلاعات اشکال‌زدایی یا DWO در حال حذف باشند.
حذف نماد symbolname از فایل مبدأ. این گزینه می‌تواند بیش از یک بار مشخص شود و می‌تواند با سایر گزینه‌های strip به‌جز -K ترکیب شود.
قرار دادن خروجی پیراسته در file به‌جای جایگزین کردن فایل موجود. هنگامی که این آرگومان استفاده می‌شود، تنها یک آرگومان objfile می‌تواند مشخص شود.
حفظ تاریخ‌های دسترسی و ویرایش فایل.
عملکرد در حالت معین (deterministic). هنگام کپی کردن اعضای بایگانی و نوشتن نمایه بایگانی، از صفر برای شناسه‌های کاربری (UID)، شناسه‌های گروهی (GID) و برچسب‌های زمانی استفاده می‌کند و حالت‌های دسترسی سازگار برای همه فایل‌ها اعمال می‌نماید.

اگر binutils با گزینه --enable-deterministic-archives پیکربندی شده باشد، این حالت به‌طور پیش‌فرض فعال است. این حالت را می‌توان با گزینه -U در زیر غیرفعال کرد.

عملکرد در حالت غیرمعین. این گزینه معکوس گزینه -D در بالا است: هنگام کپی اعضای بایگانی و نوشتن نمایه بایگانی، از مقادیر واقعی UID ،GID، برچسب زمانی و حالت‌های دسترسی فایل استفاده می‌کند.

این حالت پیش‌فرض است مگر اینکه binutils با گزینه --enable-deterministic-archives پیکربندی شده باشد.

مجاز ساختن عبارت‌های منظم در symbolnameهای استفاده‌شده در سایر گزینه‌های خط فرمان. عملگرهای علامت سوال (?)، ستاره (*)، بک‌اسلش (\) و قلاب‌ها ([]) می‌توانند در هر کجای نام نماد استفاده شوند. اگر نخستین نویسه نام نماد علامت تعجب (!) باشد، مفهوم سوییچ برای آن نماد معکوس می‌شود. به‌عنوان مثال:
-w -K !foo -K fo*

باعث می‌شود strip تنها نمادهایی را که با حروف "fo" آغاز می‌شوند نگه دارد، اما نماد "foo" را حذف کند.

حذف نمادهای غیرسراسری.
حذف نمادهای محلی تولیدشده توسط کامپایلر. (این نمادها معمولاً با L یا . شروع می‌شوند.)
هنگام پیرایش یک فایل، مثلاً با --strip-debug یا --strip-unneeded، هر نمادی که نام بخش‌ها را مشخص می‌کند و در غیر این صورت حذف می‌شد، حفظ می‌گردد.
هنگام پیرایش یک فایل، مثلاً با --strip-debug یا --strip-unneeded، هر نمادی که نام فایل‌های مبدأ را مشخص می‌کند و در غیر این صورت حذف می‌شد، حفظ می‌گردد.
پیرایش یک فایل، تخلیه محتوای هر بخشی که توسط --strip-debug حذف نمی‌شد و دست‌نخورده باقی گذاشتن بخش‌های اشکال‌زدایی. در فایل‌های ELF، این گزینه تمام بخش‌های note را نیز در خروجی حفظ می‌کند.

توجه - سرایندهای بخش‌های پیرایش‌شده شامل اندازه آن‌ها حفظ می‌شوند، اما محتوای بخش دور ریخته می‌شود. سرایندهای بخش حفظ می‌شوند تا ابزارهای دیگر بتوانند فایل debuginfo را با فایل اجرایی واقعی تطبیق دهند، حتی اگر آن فایل اجرایی به فضای آدرس دیگری بازنشانی شده باشد.

هدف این است که این گزینه در ترکیب با --add-gnu-debuglink برای ایجاد یک فایل اجرایی دو بخشی استفاده شود: یک فایل باینری پیرایش‌شده که فضای کمتری در RAM و در توزیع اشغال می‌کند، و دوم یک فایل اطلاعات اشکال‌زدایی که تنها در صورت نیاز به قابلیت‌های اشکال‌زدایی لازم است. روال پیشنهادی برای ایجاد این فایل‌ها به شرح زیر است:

1.
پیوند زدن فایل اجرایی طبق روال معمول. با فرض اینکه نام آن "foo" باشد...
2.
اجرای دستور "objcopy --only-keep-debug foo foo.dbg"; برای ایجاد فایلی حاوی اطلاعات اشکال‌زدایی.
3.
اجرای دستور "strip --strip-debug foo"; برای ایجاد یک فایل اجرایی پیرایش‌شده.
4.
اجرای دستور "objcopy --add-gnu-debuglink=foo.dbg foo"; برای افزودن پیوندی به اطلاعات اشکال‌زدایی در فایل اجرایی پیرایش‌شده.

توجه - انتخاب پسوند ".dbg" برای فایل اطلاعات اشکال‌زدایی دلخواه است. همچنین گام "--only-keep-debug" اختیاری است. در عوض می‌توانید این کار را انجام دهید:

1.
پیوند زدن فایل اجرایی طبق روال معمول.
2.
کپی کردن "foo" به "foo.full".
3.
اجرای دستور "strip --strip-debug foo";.
4.
اجرای دستور "objcopy --add-gnu-debuglink=foo.full foo";.

یعنی فایلی که توسط --add-gnu-debuglink به آن اشاره می‌شود می‌تواند کل فایل اجرایی باشد و نیازی نیست حتماً فایلی ایجادشده توسط سوییچ --only-keep-debug باشد.

توجه - این سوییچ تنها برای استفاده روی فایل‌های کاملاً پیوندخورده در نظر گرفته شده است. استفاده از آن روی فایل‌های شیء که اطلاعات اشکال‌زدایی آن‌ها ممکن است ناقص باشد منطقی نیست. علاوه بر این، قابلیت gnu_debuglink در حال حاضر تنها از وجود یک نام فایل حاوی اطلاعات اشکال‌زدایی پشتیبانی می‌کند، نه چندین نام فایل به‌ازای هر فایل شیء.

بارگذاری افزونه‌ای با نام name برای افزودن پشتیبانی از انواع مقصدهای اضافی. این گزینه تنها در صورتی در دسترس است که زنجیره ابزار با پشتیبانی از افزونه ساخته شده باشد.

اگر --plugin مشخص نشود اما پشتیبانی از افزونه فعال باشد، strip روی فایل‌های موجود در ${libdir}/bfd-plugins به ترتیب الفبا پیمایش می‌کند و اولین افزونه‌ای که شیء مربوطه را پشتیبانی کند استفاده می‌شود.

لطفاً توجه داشته باشید که این دایرکتوری جستجوی افزونه، همان دایرکتوری مورد استفاده توسط گزینه -plugin ابزار ld نیست. برای اینکه strip از افزونه پیونددهنده استفاده کند، این افزونه باید در دایرکتوری ${libdir}/bfd-plugins کپی شود. برای کامپایل‌های مبتنی بر GCC، افزونه پیونددهنده liblto_plugin.so.0.0.0 نام دارد. برای کامپایل‌های مبتنی بر Clang، نام آن LLVMgold.so است. افزونه GCC همیشه با نسخه‌های قبلی سازگار است، بنابراین کپی کردن جدیدترین نسخه کافی خواهد بود.

نمایش شماره نسخه strip.
خروجی با جزئیات: فهرست کردن تمام فایل‌های شیء ویرایش‌شده. در مورد بایگانی‌ها، strip -v تمام اعضای بایگانی را فهرست می‌کند.
@file
خواندن گزینه‌های خط فرمان از file. گزینه‌های خوانده‌شده به‌جای گزینه اصلی @file درج می‌شوند. اگر file وجود نداشته باشد یا خوانده نشود، گزینه به‌صورت لفظی در نظر گرفته شده و حذف نخواهد شد.

گزینه‌ها در file با فاصله‌های خالی از یکدیگر جدا می‌شوند. یک نویسه فاصله می‌تواند با قرار دادن کل گزینه در گیومه تکی یا دوتایی درون گزینه گنجانده شود. هر نویسه‌ای (از جمله بک‌اسلش) می‌تواند با پیشوند کردن یک بک‌اسلش به آن درج شود. فایل file خود می‌تواند حاوی گزینه‌های @file اضافی باشد؛ هر یک از این گزینه‌ها به‌صورت بازگشتی پردازش خواهند شد.

مدخل‌های Info برای binutils.

حق نشر © 1991-2026 بنیاد نرم‌افزار آزاد (Free Software Foundation, Inc.)

اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه 1.3 یا هر نسخه جدیدتر منتشرشده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. نسخه‌ای از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است.

2026-08-03 binutils-2.47