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

الخيارات

-F اسم_bfd
--target=اسم_bfd
    عامل objfile الأصلي كملف بتنسيق كود الكائن bfdname، وأعد كتابته بنفس التنسيق.

--help
    اعرض ملخصًا للخيارات لـ strip واخرج.

--info
    اعرض قائمة توضح جميع المعماريات وتنسيقات الكائنات المتاحة.

-I اسم_bfd
--input-target=اسم-bfd
    عامل objfile الأصلي كملف بتنسيق كود الكائن bfdname.

-O اسم_bfd
--output-target=اسم_bfd
    استبدل 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.

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

              --remove-relocations=.text.*

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

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

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

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

--strip-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 اسم_الرمز
--keep-symbol=اسم-الرمز
    عند تجريد الرموز، احتفظ بالرمز symbolname حتى لو كان سيُجرد في الحالة العادية. يمكن إعطاء هذا الخيار أكثر من مرة.

-M
--merge-notes
--no-merge-notes
    بالنسبة لملفات ELF، حاول (أو لا تحاول) تقليل حجم أي أقسام من نوع SHT_NOTE عن طريق إزالة الملاحظات المكررة. المبدئي هو محاولة هذا التقليل ما لم يتم تجريد معلومات التصحيح أو DWO.

-N اسم_الرمز
--strip-symbol=اسم_الرمز
    أزل الرمز symbolname من الملف المصدر. يمكن إعطاء هذا الخيار أكثر من مرة، ويمكن دمجه مع خيارات strip غير -K.

-o file
    ضع المخرجات المجردة في file، بدلاً من استبدال الملف الموجود. عند استخدام هذه الوسيطة، يمكن تحديد وسيطة objfile واحدة فقط.

-p
--preserve-dates
    احفظ تواريخ الوصول والتعديل للملف.

-D
--enable-deterministic-archives
    العمل في الوضع المحدد (deterministic). عند نسخ أعضاء الأرشيف وكتابة فهرس الأرشيف، استخدم صفرًا لـ UIDs و GIDs والطوابع الزمنية، واستخدم أوضاع ملفات متسقة لجميع الملفات.

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

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

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

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

              -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، يحافظ هذا على جميع أقسام الملاحظات في المخرجات أيضًا.

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

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

--plugin اسم
    تحميل الملحق المسمى 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 متوافقة دائمًا مع الإصدارات السابقة، لذا يكفي نسخ الأحدث فقط.

-V
--version
    اعرض رقم الإصدار لـ strip.

-v
--verbose
    مخرجات مفصلة: قائمة بجميع ملفات الكائنات المعدلة. في حالة الأرشيفات، 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 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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