| 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" گنجانده شده است.
| 2026-08-03 | binutils-2.47 |