STRIP(1) GNU Development Tools STRIP(1) نام (NAME) strip - حذف نمادها و سایر داده‌ها از فایل‌های شیء خلاصه دستور (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 حذف می‌کند. فهرست فایل‌های شیء می‌تواند شامل بایگانی‌ها (archives) نیز باشد. حداقل یک فایل شیء باید مشخص شود. دستور 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 را نیز از فایل خروجی حذف می‌کند. این گزینه می‌تواند بیش از یک بار مشخص شود. توجه داشته باشید که استفاده نادرست از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند. نویسه عام‌منظوره (wildcard) * می‌تواند در انتهای 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 تمامی نمادها را حذف می‌کند..IP -g 4 -S -d --strip-debug تنها نمادهای اشکال‌زدایی را حذف می‌کند. --strip-dwo محتوای تمام بخش‌های DWARF .dwo را حذف کرده و بخش‌های اشکال‌زدایی باقی‌مانده و تمام نمادها را دست‌نخورده باقی می‌گذارد. برای اطلاعات بیشتر، به توضیحات این گزینه در بخش objcopy مراجعه کنید. --strip-unneeded علاوه بر نمادها و بخش‌های اشکال‌زدایی که توسط --strip-debug حذف می‌شوند، تمام نمادهایی را که برای پردازش بازنشانی (relocation) مورد نیاز نیستند نیز حذف می‌کند. -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 به‌جای جایگزین کردن فایل موجود، خروجی پیراسته (strip شده) را در 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 نمادهای غیرسراسری (non-global) را حذف می‌کند. -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 sections) را نیز در خروجی حفظ می‌کند. نکته - سرآیندهای بخش‌های پیراسته‌شده، شامل اندازه‌های آن‌ها، حفظ می‌شوند اما محتویات بخش‌ها دور ریخته می‌شود. سرآیندهای بخش‌ها به این منظور حفظ می‌شوند تا سایر ابزارها بتوانند فایل debuginfo را با فایل اجرایی واقعی تطبیق دهند، حتی اگر آن فایل اجرایی به فضای نشانی متفاوتی بازنشانی شده باشد. هدف این است که این گزینه در کنار --add-gnu-debuglink برای ایجاد یک فایل اجرایی دوقسمتی استفاده شود: یکی باینری پیراسته که فضای کمتری در RAM و در توزیع اشغال می‌کند، و دیگری یک فایل اطلاعات اشکال‌زدایی که تنها در صورت نیاز به قابلیت‌های اشکال‌زدایی لازم است. روش پیشنهادی برای ایجاد این فایل‌ها به شرح زیر است: 1. "foo" باشد، سپس... 1. جهت ساخت فایلی حاوی اطلاعات اشکال‌زدایی. 1. جهت ساخت یک فایل اجرایی پیراسته. 1. جهت افزودن پیوندی به اطلاعات اشکال‌زدایی درون فایل اجرایی پیراسته. نکته---انتخاب ".dbg" به‌عنوان پسوند فایل اطلاعات اشکال‌زدایی اختیاری است. همچنین مرحلهٔ "--only-keep-debug" اختیاری است. می‌توانید در عوض این کار را انجام دهید: 1. 1. 1. 1. یعنی فایلی که توسط --add-gnu-debuglink به آن اشاره می‌شود می‌تواند فایل اجرایی کامل باشد و نیازی نیست فایلی باشد که توسط سوییچ --only-keep-debug ایجاد شده است. نکته---این سوییچ تنها برای استفاده روی فایل‌هایی در نظر گرفته شده است که به‌طور کامل پیوند خورده‌اند. استفاده از آن روی فایل‌های شیء (object files) که اطلاعات اشکال‌زدایی در آن‌ها ممکن است ناقص باشد، منطقی نیست. علاوه بر این، قابلیت gnu_debuglink در حال حاضر تنها از وجود یک نام فایل حاوی اطلاعات اشکال‌زدایی پشتیبانی می‌کند، نه چندین نام فایل بر پایهٔ یک نام برای هر فایل شیء. بارگذاری افزونه با نام name جهت افزودن پشتیبانی از انواع هدف بیشتر. این گزینه تنها در صورتی موجود است که زنجیره ابزار (toolchain) با فعال بودن پشتیبانی از افزونه ساخته شده باشد. اگر --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 با نویسه‌های فاصله (whitespace) از یکدیگر جدا می‌شوند. یک نویسه فاصله می‌تواند با قرار دادن کل گزینه در علامت نقل‌قول تکی یا دوتایی گنجانده شود. هر نویسه‌ای (از جمله بک‌اسلش) می‌تواند با پیشوند کردن یک بک‌اسلش قبل از آن نویسه درج گردد. خود file ممکن است شامل گزینه‌های @file دیگری باشد؛ هر یک از این گزینه‌ها به‌صورت بازگشتی پردازش خواهند شد. همچنین ببینید (SEE ALSO) مدخل‌های Info برای binutils. کپی‌رایت و تکثیر (COPYRIGHT) Copyright (c) 1991-2025 Free Software Foundation, Inc. اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشرشده توسط بنیاد نرم‌افزارهای آزاد (Free Software Foundation) اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد. یک نسخه از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است. binutils-2.45.1 2026-01-23 STRIP(1)