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) ابزار GNU 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 را از فایل خروجی حذف می‌کند. این گزینه می‌تواند بیش از یک‌بار مشخص شود. توجه داشته باشید که استفادهٔ نادرست از این گزینه ممکن است فایل خروجی را غیرقابل استفاده کند. نویسهٔ عامه‌پسند (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 سرایندهای بخش را حذف می‌کند. این گزینه مختص به فایل‌های 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 خروجی پاک‌سازی‌شده را در file قرار می‌دهد، به‌جای اینکه جایگزین فایل موجود شود. هنگامی که از این آرگومان استفاده می‌شود، تنها یک آرگومان objfile می‌تواند مشخص شود. -p --preserve-dates تاریخ‌های دسترسی و تغییر فایل را حفظ می‌کند. -D --enable-deterministic-archives در حالت قطعیت‌گرا (deterministic) عمل می‌کند. هنگام کپی کردن اعضای آرشیو و نوشتن نمایهٔ آرشیو، برای UIDها، GIDها و برچسب‌های زمانی از صفر، و برای همهٔ فایل‌ها از حالت‌های یکپارچهٔ فایل (file modes) استفاده می‌کند. اگر binutils با --enable-deterministic-archives پیکربندی شده باشد، این حالت به‌طور پیش‌فرض فعال است. می‌توان آن را با گزینهٔ -U در زیر غیرفعال کرد. -U --disable-deterministic-archives در حالت قطعیت‌گرا عمل نمی‌کند. این برعکس گزینهٔ -D در بالا است: هنگام کپی کردن اعضای آرشیو و نوشتن نمایهٔ آرشیو، از مقادیر واقعی UID، GID، برچسب زمانی و حالت فایل آن‌ها استفاده می‌کند. این حالت پیش‌فرض است مگر آنکه binutils با --enable-deterministic-archives پیکربندی شده باشد. -w --wildcard اجازه می‌دهد تا از عبارات باقاعده (regular expressions) در 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) را نیز در خروجی حفظ می‌کند. نکته - سرایندهای بخش‌های (section headers) پاک‌سازی‌شده، از جمله اندازهٔ آن‌ها، حفظ می‌شوند، اما محتوای بخش دور ریخته می‌شود. سرایندهای بخش حفظ می‌شوند تا سایر ابزارها بتوانند فایل debuginfo را با فایل اجرایی واقعی تطبیق دهند، حتی اگر آن فایل اجرایی به فضای آدرس دیگری بازتخصیص یافته باشد. هدف این است که این گزینه همراه با --add-gnu-debuglink برای ایجاد یک فایل اجرایی دو بخشی استفاده شود: یکی یک باینری پاک‌سازی‌شده که فضای کمتری در RAM و در توزیع اشغال می‌کند، و دومی یک فایل اطلاعات اشکال‌زدایی که تنها در صورت نیاز به قابلیت‌های اشکال‌زدایی مورد نیاز است. روش پیشنهادی برای ساخت این فایل‌ها بدین صورت است: 1.<فایل اجرایی را طبق روال معمول پیوند دهید. با فرض اینکه نام آن> "foo" باشد، سپس... 1.<دستور "objcopy --only-keep-debug foo foo.dbg" را اجرا کنید تا> فایلی حاوی اطلاعات اشکال‌زدایی ایجاد شود. 1.<دستور "objcopy --strip-debug foo" را اجرا کنید تا> یک فایل اجرایی پاک‌سازی‌شده ایجاد شود. 1.<دستور "objcopy --add-gnu-debuglink=foo.dbg foo" را اجرا کنید> تا پیوندی به اطلاعات اشکال‌زدایی درون فایل اجرایی پاک‌سازی‌شده افزوده شود. نکته---انتخاب ".dbg" به‌عنوان پسوند فایل اطلاعات اشکال‌زدایی اختیاری است. همچنین مرحلهٔ "--only-keep-debug" نیز اختیاری است. در عوض می‌توانید این کار را انجام دهید: 1.<فایل اجرایی را طبق روال معمول پیوند دهید.> 1.<"foo" را به "foo.full" کپی کنید> 1.<دستور "strip --strip-debug foo" را اجرا کنید> 1.<دستور "objcopy --add-gnu-debuglink=foo.full foo" را اجرا کنید> یعنی فایلی که --add-gnu-debuglink به آن اشاره می‌کند می‌تواند فایل اجرایی کامل باشد. الزامی نیست که حتماً فایلی ایجادشده توسط گزینهٔ --only-keep-debug باشد. نکته---این گزینه تنها برای استفاده روی فایل‌های کاملاً پیوندخورده در نظر گرفته شده است. استفاده از آن روی فایل‌های شیء (object files) که ممکن است اطلاعات اشکال‌زدایی آن‌ها ناقص باشد، منطقی نیست. علاوه بر این، ویژگی gnu_debuglink در حال حاضر تنها از وجود یک نام فایل حاوی اطلاعات اشکال‌زدایی پشتیبانی می‌کند، نه چندین نام فایل بر مبنای یک فایل به ازای هر فایل شیء. بارگذاری افزونه‌ای با نام name جهت افزودن پشتیبانی از انواع هدف (target) اضافی. این گزینه تنها در صورتی در دسترس است که زنجیره ابزار (toolchain) با پشتیبانی از افزونه‌ها ساخته شده باشد. اگر --plugin مشخص نشود، اما پشتیبانی از افزونه فعال باشد، strip فایل‌های موجود در ${libdir}/bfd-plugins را به ترتیب الفبا پیمایش کرده و نخستین افزونه‌ای که شیء مورد نظر را بپذیرد، استفاده می‌شود. لطفاً توجه داشته باشید این دایرکتوریِ جستجوی افزونه، پوشه‌ای نیست که توسط گزینهٔ -plugin در ld استفاده می‌شود. به منظور استفادهٔ strip از افزونهٔ پیونددهنده (linker)، باید آن را در دایرکتوری ${libdir}/bfd-plugins کپی کرد. برای کامپایل‌های مبتنی بر GCC، نام افزونهٔ پیونددهنده liblto_plugin.so.0.0.0 است. برای کامپایل‌های مبتنی بر Clang، نام آن LLVMgold.so است. افزونهٔ GCC همواره با نسخه‌های پیشین سازگار به عقب است، بنابراین کپی کردن جدیدترین نسخهٔ آن کفایت می‌کند. -V --version نمایش شماره نسخهٔ strip. -v --verbose خروجی پرگو: فهرست کردن تمام فایل‌های شیءِ (object) تغییریافته. در صورت وجود فایل‌های آرشیو، دستور strip -v تمامی اعضای آرشیو را فهرست می‌کند. @file خواندن گزینه‌های خط فرمان از file. گزینه‌های خوانده‌شده به جای گزینهٔ اصلی @file جایگزین می‌شوند. اگر file وجود نداشته باشد، یا خوانده نشود، گزینه به صورت لفظی در نظر گرفته شده و حذف نخواهد شد. گزینه‌ها در file با نویسهٔ فاصلهٔ سفید (whitespace) از یکدیگر جدا می‌شوند. یک نویسهٔ فاصلهٔ سفید می‌تواند با قرار دادن کل گزینه درون علامت نقل‌قول تکی یا دوگانه، درون گزینه گنجانده شود. هر نویسه‌ای (از جمله بک‌اسلش) می‌تواند با پیشوند قرار دادن یک بک‌اسلش قبل از آن گنجانده شود. خود file می‌تواند شامل گزینه‌های @file بیشتری باشد؛ چنین گزینه‌هایی به صورت بازگشتی پردازش خواهند شد. همچنین ببینید (SEE ALSO) مدخل‌های Info برای binutils. کپی‌رایت و تکثیر (COPYRIGHT) کپی‌رایت (c) 1991-2025 Free Software Foundation, Inc. اجازهٔ کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخهٔ 1.3 یا هر نسخهٔ بالاتر منتشر شده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های ناپیوسته، بدون متون روی جلد، و بدون متون پشت جلد. یک نسخه از این مجوز در بخشی با عنوان «GNU Free Documentation License» گنجانده شده است. binutils-2.45.1 2026-01-23 STRIP(1)