STRIP(1) GNU Development Tools STRIP(1) نام (NAME) x86_64-w64-mingw32-strip - حذف نمادها و متادیتاها از فایل‌های شیء و اجرایی x86_64 MinGW-w64 خلاصه دستور (SYNOPSIS) 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... توضیحات (DESCRIPTION) ابزار strip گنو، تمام نمادها را از فایل‌های شیء objfile حذف می‌کند. فهرست فایل‌های شیء می‌تواند شامل بایگانی‌ها نیز باشد. حداقل یک فایل شیء باید مشخص شود. strip فایل‌های مشخص‌شده در آرگومان‌های خود را درجا ویرایش می‌کند، به‌جای اینکه نسخه‌های تغییریافته را با نام‌های متفاوتی بنویسد. گزینه‌ها (OPTIONS) -F bfdname --target=bfdname فایل شیء اصلی objfile را به‌عنوان فایلی با قالب کد شیء bfdname در نظر می‌گیرد و آن را در همان قالب بازنویسی می‌کند. --help نمایش خلاصه‌ای از گزینه‌های strip و خروج. --info نمایش فهرستی از تمام معماری‌ها و قالب‌های شیء موجود. -I bfdname --input-target=bfdname فایل شیء اصلی objfile را به‌عنوان فایلی با قالب کد شیء bfdname در نظر می‌گیرد. -O bfdname --output-target=bfdname جایگزینی objfile با فایلی در قالب خروجی bfdname. -R sectionname --remove-section=sectionname حذف هر بخش با نام sectionname از فایل خروجی، علاوه بر بخش‌هایی که در غیر این صورت حذف می‌شدند. این گزینه می‌تواند بیش از یک بار مشخص شود. توجه داشته باشید که استفاده نامناسب از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند. نویسه عامه‌پسند * می‌تواند در انتهای sectionname قرار گیرد. در این صورت، هر بخشی که با sectionname شروع شود حذف خواهد شد. اگر نخستین نویسه sectionpattern علامت تعجب (!) باشد، بخش‌های منطبق حذف نخواهند شد، حتی اگر کاربرد قبلی --remove-section در همان خط فرمان دستور حذف آن را داده باشد. به‌عنوان مثال: --remove-section=.text.* --remove-section=!.text.foo تمام بخش‌های منطبق با الگوی '.text.*' را حذف می‌کند، اما بخش '.text.foo' را حذف نخواهد کرد. --keep-section=sectionpattern هنگام حذف بخش‌ها از فایل خروجی، بخش‌های منطبق با sectionpattern را نگه می‌دارد. --remove-relocations=sectionpattern حذف اطلاعات بازنشانی (relocations) از فایل خروجی برای هر بخش منطبق با sectionpattern. این گزینه می‌تواند بیش از یک بار مشخص شود. توجه داشته باشید که استفاده نادرست از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند. نویسه‌های عامه‌پسند در sectionpattern پذیرفته می‌شوند. به‌عنوان مثال: --remove-relocations=.text.* اطلاعات بازنشانی را برای تمام بخش‌های منطبق با الگوی '.text.*' حذف خواهد کرد. اگر نخستین نویسه sectionpattern علامت تعجب (!) باشد، بازنشانی‌های بخش‌های منطبق حذف نخواهند شد حتی اگر استفاده قبلی از --remove-relocations در همان خط فرمان موجب حذف آن‌ها می‌شد. به‌عنوان مثال: --remove-relocations=.text.* --remove-relocations=!.text.foo تمام بازنشانی‌های بخش‌های منطبق با الگوی '.text.*' را حذف می‌کند، اما بازنشانی‌های بخش '.text.foo' را حذف نخواهد کرد. --strip-section-headers حذف سرایندهای بخش‌ها (section headers). این گزینه مختص فایل‌های ELF است و مستلزم فعال شدن --strip-all و --merge-notes می‌باشد. -s --strip-all حذف تمام نمادها. -g -S -d --strip-debug فقط حذف نمادهای اشکال‌زدایی. --strip-dwo حذف محتوای تمام بخش‌های DWARF .dwo و دست‌نخورده باقی گذاشتن بقیه بخش‌های اشکال‌زدایی و تمام نمادها. برای اطلاعات بیشتر، توضیحات این گزینه را در بخش objcopy مشاهده کنید. --strip-unneeded حذف تمام نمادهایی که برای پردازش بازنشانی مورد نیاز نیستند، علاوه بر نمادها و بخش‌های اشکال‌زدایی که توسط --strip-debug حذف می‌شوند. -K symbolname --keep-symbol=symbolname هنگام حذف نمادها، نماد symbolname را حتی اگر در حالت عادی حذف می‌شد نگه می‌دارد. این گزینه می‌تواند بیش از یک بار مشخص شود. -M --merge-notes --no-merge-notes برای فایل‌های ELF، تلاش برای کاهش اندازه بخش‌های نوع SHT_NOTE از طریق حذف یادداشت‌های تکراری (یا عدم تلاش). حالت پیش‌فرض تلاش برای این کاهش است، مگر اینکه اطلاعات اشکال‌زدایی یا DWO در حال حذف باشند. -N symbolname --strip-symbol=symbolname حذف نماد symbolname از فایل مبدأ. این گزینه می‌تواند بیش از یک بار مشخص شود و می‌تواند با سایر گزینه‌های strip به‌جز -K ترکیب شود. -o file قرار دادن خروجی پیراسته در file به‌جای جایگزین کردن فایل موجود. هنگامی که این آرگومان استفاده می‌شود، تنها یک آرگومان objfile می‌تواند مشخص شود. -p --preserve-dates حفظ تاریخ‌های دسترسی و ویرایش فایل. -D --enable-deterministic-archives عملکرد در حالت معین (deterministic). هنگام کپی کردن اعضای بایگانی و نوشتن نمایه بایگانی، از صفر برای شناسه‌های کاربری (UID)، شناسه‌های گروهی (GID) و برچسب‌های زمانی استفاده می‌کند و حالت‌های دسترسی سازگار برای همه فایل‌ها اعمال می‌نماید. اگر binutils با گزینه --enable-deterministic-archives پیکربندی شده باشد، این حالت به‌طور پیش‌فرض فعال است. این حالت را می‌توان با گزینه -U در زیر غیرفعال کرد. -U --disable-deterministic-archives عملکرد در حالت غیرمعین. این گزینه معکوس گزینه -D در بالا است: هنگام کپی اعضای بایگانی و نوشتن نمایه بایگانی، از مقادیر واقعی UID ،GID، برچسب زمانی و حالت‌های دسترسی فایل استفاده می‌کند. این حالت پیش‌فرض است مگر اینکه binutils با گزینه --enable-deterministic-archives پیکربندی شده باشد. -w --wildcard مجاز ساختن عبارت‌های منظم در symbolnameهای استفاده‌شده در سایر گزینه‌های خط فرمان. عملگرهای علامت سوال (?)، ستاره (*)، بک‌اسلش (\) و قلاب‌ها ([]) می‌توانند در هر کجای نام نماد استفاده شوند. اگر نخستین نویسه نام نماد علامت تعجب (!) باشد، مفهوم سوییچ برای آن نماد معکوس می‌شود. به‌عنوان مثال: -w -K !foo -K fo* باعث می‌شود strip تنها نمادهایی را که با حروف "fo" آغاز می‌شوند نگه دارد، اما نماد "foo" را حذف کند. -x --discard-all حذف نمادهای غیرسراسری. -X --discard-locals حذف نمادهای محلی تولیدشده توسط کامپایلر. (این نمادها معمولاً با L یا . شروع می‌شوند.) --keep-section-symbols هنگام پیرایش یک فایل، مثلاً با --strip-debug یا --strip-unneeded، هر نمادی که نام بخش‌ها را مشخص می‌کند و در غیر این صورت حذف می‌شد، حفظ می‌گردد. --keep-file-symbols هنگام پیرایش یک فایل، مثلاً با --strip-debug یا --strip-unneeded، هر نمادی که نام فایل‌های مبدأ را مشخص می‌کند و در غیر این صورت حذف می‌شد، حفظ می‌گردد. --only-keep-debug پیرایش یک فایل، تخلیه محتوای هر بخشی که توسط --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 در حال حاضر تنها از وجود یک نام فایل حاوی اطلاعات اشکال‌زدایی پشتیبانی می‌کند، نه چندین نام فایل به‌ازای هر فایل شیء. --plugin name بارگذاری افزونه‌ای با نام name برای افزودن پشتیبانی از انواع مقصدهای اضافی. این گزینه تنها در صورتی در دسترس است که زنجیره ابزار با پشتیبانی از افزونه ساخته شده باشد. اگر --plugin مشخص نشود اما پشتیبانی از افزونه فعال باشد، strip روی فایل‌های موجود در ${libdir}/bfd-plugins به ترتیب الفبا پیمایش می‌کند و اولین افزونه‌ای که شیء مربوطه را پشتیبانی کند استفاده می‌شود. لطفاً توجه داشته باشید که این دایرکتوری جستجوی افزونه، همان دایرکتوری مورد استفاده توسط گزینه -plugin ابزار ld نیست. برای اینکه strip از افزونه پیونددهنده استفاده کند، این افزونه باید در دایرکتوری ${libdir}/bfd-plugins کپی شود. برای کامپایل‌های مبتنی بر GCC، افزونه پیونددهنده liblto_plugin.so.0.0.0 نام دارد. برای کامپایل‌های مبتنی بر Clang، نام آن LLVMgold.so است. افزونه GCC همیشه با نسخه‌های قبلی سازگار است، بنابراین کپی کردن جدیدترین نسخه کافی خواهد بود. -V --version نمایش شماره نسخه strip. -v --verbose خروجی با جزئیات: فهرست کردن تمام فایل‌های شیء ویرایش‌شده. در مورد بایگانی‌ها، strip -v تمام اعضای بایگانی را فهرست می‌کند. @file خواندن گزینه‌های خط فرمان از file. گزینه‌های خوانده‌شده به‌جای گزینه اصلی @file درج می‌شوند. اگر file وجود نداشته باشد یا خوانده نشود، گزینه به‌صورت لفظی در نظر گرفته شده و حذف نخواهد شد. گزینه‌ها در file با فاصله‌های خالی از یکدیگر جدا می‌شوند. یک نویسه فاصله می‌تواند با قرار دادن کل گزینه در گیومه تکی یا دوتایی درون گزینه گنجانده شود. هر نویسه‌ای (از جمله بک‌اسلش) می‌تواند با پیشوند کردن یک بک‌اسلش به آن درج شود. فایل file خود می‌تواند حاوی گزینه‌های @file اضافی باشد؛ هر یک از این گزینه‌ها به‌صورت بازگشتی پردازش خواهند شد. همچنین ببینید (SEE ALSO) مدخل‌های Info برای binutils. حق نشر (COPYRIGHT) حق نشر © 1991-2026 بنیاد نرم‌افزار آزاد (Free Software Foundation, Inc.) اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه 1.3 یا هر نسخه جدیدتر منتشرشده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. نسخه‌ای از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است. binutils-2.47 2026-08-03 STRIP(1)