Scroll to navigation

STRIP(1) أدوات تطوير جنو STRIP(1)

الاسم

strip - تجاهل الرموز والبيانات الأخرى من ملفات الكائن

موجز

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...

الوصف

يقوم GNU strip بتجاهل جميع الرموز من ملفات الكائن objfile. قد تتضمن قائمة ملفات الكائن أرشيفات. يجب تقديم ملف كائن واحد على الأقل.

strip يعدل الملفات المسماة في وسيطته، بدلاً من كتابة نسخ معدلة تحت أسماء مختلفة.

الخيارات

عامل objfile الأصلي كملف بتنسيق كود الكائن bfdname، وأعد كتابته بنفس التنسيق.
اعرض ملخصًا للخيارات لـ strip واخرج.
اعرض قائمة توضح جميع المعماريات وتنسيقات الكائنات المتاحة.
عامل objfile الأصلي كملف بتنسيق كود الكائن bfdname.
استبدل objfile بملف بتنسيق الإخراج bfdname.
أزل أي قسم باسم sectionname من ملف الإخراج، بالإضافة إلى أي أقسام قد تُزال بخلاف ذلك. يمكن تقديم هذا الخيار أكثر من مرة. لاحظ أن استخدام هذا الخيار بشكل غير مناسب قد يجعل ملف الإخراج غير قابل للاستخدام. يمكن تقديم حرف البدل * في نهاية sectionname. إذا كان الأمر كذلك، فسيتم إزالة أي قسم يبدأ بـ sectionname.

إذا كان المحرف الأول من sectionpattern هو علامة التعجب (!)، فلن تُزَل الأقسام المتطابقة حتى لو كان استخدام سابق لـ --remove-section في نفس سطر الأوامر سيؤدي إلى إزالتها. على سبيل المثال:

          --remove-section=.text.* --remove-section=!.text.foo
    

سيزيل جميع الأقسام التي تطابق النمط '.text.*'، لكنه لن يزيل القسم '.text.foo'.

عند إزالة الأقسام من ملف المخرج، احتفظ بالأقسام التي تطابق sectionpattern.
أزل عمليات إعادة التوطين من ملف الإخراج لأي قسم يطابق sectionpattern. يمكن تقديم هذا الخيار أكثر من مرة. لاحظ أن استخدام هذا الخيار بشكل غير مناسب قد يجعل ملف الإخراج غير قابل للاستخدام. يتم قبول أحرف البدل في sectionpattern. على سبيل المثال:

          --remove-relocations=.text.*
    

سيؤدي ذلك إلى إزالة عمليات إعادة التوطين لجميع الأقسام المطابقة للنمط '.text.*'.

إذا كان المحرف الأول من sectionpattern هو علامة التعجب (!)، فلن تُزَال إعادة التوطين (relocation) للأقسام المتطابقة حتى لو كان استخدام سابق لـ --remove-relocations في نفس سطر الأوامر سيؤدي إلى إزالة عمليات إعادة التوطين. على سبيل المثال:

          --remove-relocations=.text.* --remove-relocations=!.text.foo
    

سيزيل جميع عمليات إعادة التوطين للأقسام التي تطابق النمط '.text.*'، لكنه لن يزيل عمليات إعادة التوطين للقسم '.text.foo'.

قم بتجريد رؤوس الأقسام. هذا الخيار خاص بملفات ELF. يستلزم --strip-all و --merge-notes.
أزل جميع الرموز.
أزل رموز التصحيح فقط.
أزل محتويات جميع أقسام DWARF .dwo، مع ترك أقسام التصحيح المتبقية وجميع الرموز سليمة. راجع وصف هذا الخيار في قسم objcopy لمزيد من المعلومات.
إزالة جميع الرموز التي لا حاجة إليها لمعالجة إعادة التوطين بالإضافة إلى رموز تنقيح الأخطاء والمقاطع المزالَة بواسطة --strip-debug.
عند تجريد الرموز، احتفظ بالرمز symbolname حتى لو كان سيُجرد في الحالة العادية. يمكن إعطاء هذا الخيار أكثر من مرة.
بالنسبة لملفات ELF، حاول (أو لا تحاول) تقليل حجم أي أقسام من نوع SHT_NOTE عن طريق إزالة الملاحظات المكررة. المبدئي هو محاولة هذا التقليل ما لم يتم تجريد معلومات التصحيح أو DWO.
أزل الرمز symbolname من الملف المصدر. يمكن إعطاء هذا الخيار أكثر من مرة، ويمكن دمجه مع خيارات strip غير -K.
ضع المخرجات المجردة في file، بدلاً من استبدال الملف الموجود. عند استخدام هذه الوسيطة، يمكن تحديد وسيطة objfile واحدة فقط.
احفظ تواريخ الوصول والتعديل للملف.
العمل في الوضع المحدد (deterministic). عند نسخ أعضاء الأرشيف وكتابة فهرس الأرشيف، استخدم صفرًا لـ UIDs و GIDs والطوابع الزمنية، واستخدم أوضاع ملفات متسقة لجميع الملفات.

إذا ضُبطت binutils مع خيار --enable-deterministic-archives، فإن هذا الوضع يكون مفعلا مبدئيا. يمكن تعطيله بخيار -U أدناه.

لا يعمل في الوضع المحدد. هذا هو عكس الخيار -D أعلاه: عند نسخ أعضاء الأرشيف وكتابة فهرس الأرشيف، تُستخدم قيم UID وGID والطابع الزمني ووضع الملف الفعلية.

هذا هو المبدئي ما لم يتم ضبط binutils بـ --enable-deterministic-archives.

اسمح بالتعبيرات النمطية في symbolnames المستخدمة في خيارات سطر الأوامر الأخرى. يمكن استخدام معاملات علامة الاستفهام (?)، والنجمة (*)، والشرطة المائلة العكسية (\)، والأقواس المربعة ([]) في أي مكان في اسم الرمز. إذا كان المحرف الأول من اسم الرمز هو علامة التعجب (!)، فإن معنى التبديل يُعكس لهذا الرمز. على سبيل المثال:

          -w -K !foo -K fo*
    

سيؤدي ذلك إلى جعل strip يحتفظ فقط بالرموز التي تبدأ بالأحرف "fo"، ولكن يتجاهل الرمز "foo".

أزل الرموز غير العامة.
أزل الرموز المحلية المولدة بواسطة المترجم. (تبدأ هذه عادةً بـ L أو ..)
عند تجريد ملف، ربما باستخدام --strip-debug أو --strip-unneeded، احتفظ بأي رموز تحدد أسماء الأقسام، والتي كانت ستُجرد لولا ذلك.
عند تجريد ملف، ربما باستخدام --strip-debug أو --strip-unneeded، احتفظ بأي رموز تحدد أسماء ملفات المصدر، والتي كانت ستُجرد لولا ذلك.
جرد ملف، مع إفراغ محتويات أي أقسام لن يتم تجريدها بواسطة --strip-debug وترك أقسام التصحيح سليمة. في ملفات ELF، يحافظ هذا على جميع أقسام الملاحظات في المخرجات أيضًا.

ملاحظة - تُحفَظ ترويسات الأجزاء للأجزاء المجردة، بما في ذلك أحجامها، ولكن تُتخلَّص من محتويات الجزء. تُحفَظ ترويسات الأجزاء لتمكين الأدوات الأخرى من مطابقة ملف معلومات التنقيح مع الملف التنفيذي الحقيقي، حتى لو جرى نقل ذلك الملف التنفيذي إلى مساحة عناوين مختلفة.

القصد هو استخدام هذا الخيار بالاشتراك مع --add-gnu-debuglink لإنشاء ملف تنفيذي من جزأين. الأول ثنائي مجرد يشغل مساحة أقل في ذاكرة الوصول العشوائي وفي التوزيعة، والثاني ملف معلومات تنقيح لا يُحتاج إليه إلا إذا كانت قدرات التنقيح مطلوبة. الإجراء المقترح لإنشاء هذه الملفات هو كما يلي:

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 تدعم حاليًا وجود اسم ملف واحد فقط يحتوي على معلومات التنقيح، وليس عدة أسماء ملفات على أساس ملف لكل كائن.

تحميل الملحق المسمى name لإضافة دعم لأنواع أهداف إضافية. يتوفر هذا الخيار فقط إذا بُنيت مجموعة الأدوات (toolchain) مع تمكين دعم الملحقات.

إذا لم يتم توفير --plugin، ولكن تم تمكين دعم الإضافات، فإن strip يتكرر عبر الملفات في ${libdir}/bfd-plugins بترتيب أبجدي ويتم استخدام أول إضافة تطالب بالكائن المعني.

يرجى ملاحظة أن دليل البحث عن الإضافات هذا ليس هو نفسه المستخدم بواسطة خيار ld's -plugin. لجعل strip يستخدم إضافة الموصل، يجب نسخها إلى دليل ${libdir}/bfd-plugins. بالنسبة لترجمات GCC، تُسمى إضافة الموصل liblto_plugin.so.0.0.0. بالنسبة لترجمات Clang، تُسمى LLVMgold.so. إضافة GCC متوافقة دائمًا مع الإصدارات السابقة، لذا يكفي نسخ الأحدث فقط.

اعرض رقم الإصدار لـ strip.
مخرجات مفصلة: قائمة بجميع ملفات الكائنات المعدلة. في حالة الأرشيفات، strip -v يسرد جميع أعضاء الأرشيف.
@الملف
اقرأ خيارات سطر الأوامر من file. تُدرج الخيارات المقروءة مكان خيار @file الأصلي. إذا كان file غير موجود، أو لا يمكن قراءته، فسيُعامل الخيار حرفيًا ولن يُزال.

تُفصل الخيارات في file بمسافات فارغة. يمكن تضمين حرف مسافة فارغة في خيار ما عن طريق إحاطة الخيار بالكامل إما بعلامات اقتباس مفردة أو مزدوجة. يمكن تضمين أي حرف (بما في ذلك الشرطة المائلة العكسية) عن طريق سبق الحرف المراد تضمينه بشرطة مائلة عكسية. يمكن لـ file نفسه أن يحتوي على خيارات @file إضافية؛ وتُعالج أي خيارات من هذا القبيل بشكل متكرر (recursively).

انظر أيضًا

مدخلات Info الخاصة بـ binutils.

حقوق النسخ

حقوق الطبع والنشر (c) لعام 1991-2026 لمؤسسة البرمجيات الحرة، المحدودة.

يُمنح الإذن بنسخ وتوزيع و/أو تعديل هذا المستند بموجب شروط رخصة جنو للوثائق الحرة (GNU Free Documentation License)، الإصدار 1.3 أو أي إصدار لاحق تنشره مؤسسة البرمجيات الحرة؛ مع عدم وجود أقسام ثابتة، وبدون نصوص غلاف أمامي، وبدون نصوص غلاف خلفي. نُسخة من الرخصة مضمنة في القسم المعنون "GNU Free Documentation License".

ترجمة

تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.

5 مارس 2026 binutils-2.46