STRIP(1) GNU Development Tools STRIP(1) نام (NAME) riscv64-elf-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) حذف می‌کند. فهرست فایل‌های شیء می‌تواند شامل آرشیوها نیز باشد. حداقل یک فایل شیء باید مشخص شود. دستور 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 تمامی نمادها را حذف می‌کند. -g -S -d --strip-debug تنها نمادهای اشکال‌زدایی را حذف می‌کند. --strip-dwo محتوای تمامی بخش‌های .dwo مربوط به DWARF را حذف می‌کند، اما سایر بخش‌های اشکال‌زدایی و تمامی نمادها را دست‌نخورده باقی می‌گذارد. برای اطلاعات بیشتر، توضیحات این گزینه را در بخش 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 را از فایل مبدأ حذف می‌کند. این گزینه می‌تواند بیش از یک بار مشخص شود و می‌تواند با سایر گزینه‌های پیراستن به‌جز -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 اجازه استفاده از عبارت‌های باقاعده (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) را نیز در خروجی حفظ می‌کند. توجه - هدرهای بخش‌های پیراسته‌شده از جمله اندازه آن‌ها حفظ می‌شوند، اما محتوای واقعی بخش دور ریخته می‌شود. حفظ هدرهای بخش‌ها به این دلیل است که سایر ابزارها بتوانند فایل debuginfo را با فایل اجرایی واقعی تطبیق دهند، حتی اگر آن فایل اجرایی به فضای آدرس دیگری بازنشانی (relocate) شده باشد. هدف از این گزینه، استفاده مشترک با --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 ایجاد شده است. توجه - این سوییچ تنها برای استفاده روی فایل‌های کاملاً پیوندخورده (fully linked) در نظر گرفته شده است. استفاده از آن روی فایل‌های شیء که ممکن است اطلاعات اشکال‌زدایی ناقص داشته باشند منطقی نیست. گذشته از این، قابلیت 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 همواره با نسخه‌های پیشین سازگار است (backwards compatible)، بنابراین کپی کردن جدیدترین نسخه کفایت می‌کند. -V --version شماره نسخه strip را نمایش می‌دهد. -v --verbose خروجی پرجزئیات: تمامی فایل‌های شیء اصلاح‌شده را فهرست می‌کند. در مورد آرشیوها، strip -v تمامی اعضای آرشیو را فهرست می‌کند. @file گزینه‌های خط فرمان را از file می‌خواند. گزینه‌های خوانده‌شده در محل قرارگیری گزینه اولیه @file جایگزین می‌شوند. اگر file وجود نداشته باشد یا قابل خواندن نباشد، با این گزینه به‌صورت تحت‌اللفظی برخورد شده و حذف نخواهد شد. گزینه‌ها در file با نویسه‌های فاصله خالی از یکدیگر جدا می‌شوند. با قرار دادن کل گزینه درون علامت‌های نقل‌قول تکی یا دوگانه، می‌توان یک نویسه فاصله را در یک گزینه گنجاند. هر نویسه‌ای (از جمله بک‌اسلش) را می‌توان با پیشوند قرار دادن یک نویسه بک‌اسلش در متن گنجاند. خودِ file نیز ممکن است شامل گزینه‌های @file اضافی باشد؛ چنین گزینه‌هایی به‌صورت بازگشتی پردازش خواهند شد. همچنین ببینید (SEE ALSO) مدخل‌های Info برای binutils. حق نشر (COPYRIGHT) Copyright (c) 1991-2025 Free Software Foundation, Inc. اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه 1.3 یا هر نسخه جدیدتر منتشرشده توسط بنیاد نرم‌افزار آزاد داده می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد و بدون متون پشت جلد. یک نسخه از این مجوز در بخش "GNU Free Documentation License" گنجانده شده است. binutils-2.47 2026-08-11 STRIP(1)