این دستور arm-linux-gnueabihf-objcopy است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
objcopy - کپی و ترجمه فایل های شی
خلاصه
objcopy [-F bfdname|--target=bfdname]
[-I bfdname|--input-target=bfdname]
[-O bfdname|--output-target=bfdname]
[-B بفدارچ|--binary-architecture=بفدارچ]
[-S|-- نوار همه]
[-g|-- strip-debug]
[-K نام نماد|--keep-symbol=نام نماد]
[-N نام نماد|--strip-symbol=نام نماد]
[--strip-unneeded-symbol=نام نماد]
[-G نام نماد|--keep-global-symbol=نام نماد]
[-محلی کردن-پنهان کردن]
[-L نام نماد|--localize-symbol=نام نماد]
[--globalize-symbol=نام نماد]
[-W نام نماد|--تضعیف-symbol=نام نماد]
[-w|-کارت عام]
[-x|- همه را کنار بگذارید]
[-X|-- دور انداختن-محلی ها]
[-b بایت|--بایت=بایت]
[-i [وسعت]|--تقاطع[=وسعت]]
[--interleave-width=عرض]
[-j الگوی بخش|--only-section=الگوی بخش]
[-R الگوی بخش|--remove-section=الگوی بخش]
[-p|--خرماهای نگهداری شده]
[-D|-- enable-deterministic-archives]
[-U|-- غیر فعال کردن - قطعی - آرشیو]
[--اشکال زدایی]
[--gap-fill=وال]
[--pad-to=نشانی]
[--set-start=وال]
[--adjust-start=شامل]
[--change-addresses=شامل]
[--change-section-address الگوی بخش{=،+،-}وال]
[--change-section-lma الگوی بخش{=،+،-}وال]
[--change-section-vma الگوی بخش{=،+،-}وال]
[--تغییر-هشدار] [- هشدارهای بدون تغییر]
[-- مجموعه-بخش-پرچم ها الگوی بخش=پرچم ها]
[--افزودن-بخش نام بخش=نام فایل]
[--بخش تخلیه نام بخش=نام فایل]
[-بخش به روز رسانی نام بخش=نام فایل]
[--تغییر نام-بخش نام قدیمی=نام جدید[,پرچم ها]]
[- نام های بخش طولانی {فعال کردن، غیرفعال کردن، حفظ کردن}]
[-- تغییر - پیشرو - کاراکتر] [--حذف-پیشرو-کاره]
[--reverse-bytes=تعداد]
[--srec-len=IVAL] [--srec-forceS3]
[- تعریف مجدد-sym قدیمی=جدید]
[--redefine-syms=نام فایل]
[-- تضعیف کردن]
[--keep-symbols=نام فایل]
[--strip-symbols=نام فایل]
[--strip-unneeded-symbols=نام فایل]
[--keep-global-symbols=نام فایل]
[--localize-symbols=نام فایل]
[--globalize-symbols=نام فایل]
[--symbols-weaken=نام فایل]
[--افزودن-نماد نام=[بخش:]ارزش[,پرچم ها]
[--alt-machine-code=شاخص]
[--پیشوند-symbols=رشته]
[--prefix-sections=رشته]
[--prefix-alloc-sections=رشته]
[--add-gnu-debuglink=مسیر به فایل]
[--keep-file-symbols]
[--only-keep-debug]
[-- strip-dwo]
[--extract-dwo]
[--عصاره-نماد]
[- متن قابل نوشتن]
[---نوشته خواندنی]
[--خالص]
[-- نجس]
[--file-alignment=تعداد]
[--heap=اندازه]
[--image-base=نشانی]
[--section-alignment=تعداد]
[-- پشته =اندازه]
[--زیر سیستم=که:عمده.خردسال]
[--فشرده-اشکال-بخش ها]
[--فشرده-debug-sections]
[--dwarf-depth=n]
[--dwarf-start=n]
[-v|-- پرحرف]
[-V|- نسخه]
[--کمک] [-- اطلاعات]
پرونده [مجموعه]
شرح
گنو objcopy ابزار محتویات یک فایل شی را به دیگری کپی می کند. objcopy استفاده
کتابخانه GNU BFD برای خواندن و نوشتن فایل های شی. می تواند مقصد را بنویسد
فایل شی در قالبی متفاوت از فرمت فایل شی منبع. رفتار دقیق
of objcopy توسط گزینه های خط فرمان کنترل می شود. توجه داشته باشید که objcopy باید قادر به
یک فایل کاملاً مرتبط را بین هر دو فرمت کپی کنید. با این حال، کپی کردن یک شی قابل جابجایی
فایل بین هر دو فرمت ممکن است مطابق انتظار کار نکند.
objcopy فایل های موقتی را برای انجام ترجمه های خود ایجاد می کند و سپس آنها را حذف می کند.
objcopy از BFD برای انجام تمام کارهای ترجمه خود استفاده می کند. به تمامی فرمت ها دسترسی دارد
در BFD شرح داده شده است و بنابراین قادر است اکثر فرمت ها را بدون بیان صریح تشخیص دهد.
objcopy می توان برای تولید رکوردهای S با استفاده از هدف خروجی استفاده کرد srec (مثلا استفاده کنید -O
srec).
objcopy می توان از آن برای تولید یک فایل باینری خام با استفاده از هدف خروجی استفاده کرد دوتایی
(مثلا استفاده کنید -O دوتایی) چه زمانی objcopy یک فایل باینری خام تولید می کند، اساسا این کار را انجام خواهد داد
یک حافظه خالی از محتویات فایل شی ورودی تولید کنید. همه نمادها و
اطلاعات جابجایی حذف خواهد شد. تخلیه حافظه از آدرس بار شروع می شود
از پایین ترین بخش کپی شده در فایل خروجی.
هنگام تولید یک رکورد S یا یک فایل باینری خام، ممکن است استفاده از آن مفید باشد -S برای حذف
بخش های حاوی اطلاعات اشکال زدایی در بعضی موارد -R برای حذف مفید خواهد بود
بخش هایی که حاوی اطلاعاتی هستند که فایل باینری به آنها نیاز ندارد.
توجه داشته باشید---objcopy قادر به تغییر endianness فایل های ورودی خود نیست. اگر ورودی
فرمت پایانی دارد (بعضی فرمت ها ندارند)، objcopy فقط می تواند ورودی ها را در فایل کپی کند
قالبهایی که اندیان بودن یکسانی دارند یا فاقد پایان هستند (مثلاً srec). (با این حال،
ببینید -- معکوس بایت گزینه.)
OPTIONS
پرونده
مجموعه
به ترتیب فایل های ورودی و خروجی اگر مشخص نکنید مجموعه, objcopy
یک فایل موقت ایجاد می کند و به طور مخرب نتیجه را با نام of تغییر می دهد پرونده.
-I bfdname
--input-target=bfdname
فرمت شی فایل منبع را در نظر بگیرید bfdname، به جای تلاش برای
آن را استنباط کنید
-O bfdname
--output-target=bfdname
فایل خروجی را با استفاده از فرمت شی بنویسید bfdname.
-F bfdname
--target=bfdname
استفاده کنید bfdname به عنوان فرمت شی برای هر دو فایل ورودی و خروجی. یعنی به سادگی
انتقال داده از مبدا به مقصد بدون ترجمه
-B بفدارچ
--binary-architecture=بفدارچ
هنگام تبدیل یک فایل ورودی بدون معماری به یک فایل شی مفید است. در این
در صورتی که می توان معماری خروجی را روی آن تنظیم کرد بفدارچ. این گزینه نادیده گرفته می شود اگر
فایل ورودی دارای یک شناخته شده است بفدارچ. شما می توانید به این داده های باینری در داخل یک برنامه دسترسی داشته باشید
با ارجاع به نمادهای ویژه ای که توسط فرآیند تبدیل ایجاد می شود. اینها
نمادها _دودویی_ نامیده می شوندمبهم کردن_شروع، _دودویی_مبهم کردن_پایان و
_دودویی_مبهم کردن_اندازه. به عنوان مثال می توانید یک فایل تصویری را به یک فایل شی تبدیل کنید و
سپس با استفاده از این نمادها در کد خود به آن دسترسی پیدا کنید.
-j الگوی بخش
--only-section=الگوی بخش
فقط بخش های مشخص شده را از فایل ورودی به فایل خروجی کپی کنید. این گزینه
ممکن است بیش از یک بار داده شود. توجه داشته باشید که استفاده نامناسب از این گزینه ممکن است باعث شود
فایل خروجی غیر قابل استفاده کاراکترهای Wildcard در پذیرفته می شوند الگوی بخش.
-R الگوی بخش
--remove-section=الگوی بخش
هر بخش مطابقت را حذف کنید الگوی بخش از فایل خروجی این گزینه ممکن است
بیش از یک بار داده شده است. توجه داشته باشید که استفاده نامناسب از این گزینه ممکن است باعث خروجی شود
فایل غیر قابل استفاده کاراکترهای Wildcard در پذیرفته می شوند الگوی بخش. با استفاده از هر دو -j
و -R گزینه ها با هم منجر به رفتار نامشخص می شود.
-S
-- نوار همه
اطلاعات جابجایی و نماد را از فایل منبع کپی نکنید.
-g
-- strip-debug
نمادها یا بخش های اشکال زدایی را از فایل منبع کپی نکنید.
نوار-بی نیاز
تمام نمادهایی را که برای پردازش جابجایی لازم نیست حذف کنید.
-K نام نماد
--keep-symbol=نام نماد
هنگام حذف نمادها، نماد را نگه دارید نام نماد حتی اگر به طور معمول کنده شود.
این گزینه ممکن است بیش از یک بار داده شود.
-N نام نماد
--strip-symbol=نام نماد
نماد را کپی نکنید نام نماد از فایل منبع این گزینه ممکن است بیشتر داده شود
بیش از یکبار
--strip-unneeded-symbol=نام نماد
نماد را کپی نکنید نام نماد از فایل منبع مگر اینکه توسط a مورد نیاز باشد
جابجایی این گزینه ممکن است بیش از یک بار داده شود.
-G نام نماد
--keep-global-symbol=نام نماد
فقط نماد را نگه دارید نام نماد جهانی همه نمادهای دیگر را در فایل محلی کنید، به طوری که
آنها در خارج قابل مشاهده نیستند. این گزینه ممکن است بیش از یک بار داده شود.
-محلی کردن-پنهان کردن
در یک شی ELF، تمام نمادهایی را که نمای پنهان یا داخلی دارند به عنوان محلی علامت گذاری کنید.
این گزینه در بالای گزینه های محلی سازی خاص نمادها مانند -L.
-L نام نماد
--localize-symbol=نام نماد
نماد بسازید نام نماد محلی به فایل، به طوری که در خارج قابل مشاهده نباشد. این
گزینه ممکن است بیش از یک بار داده شود.
-W نام نماد
--تضعیف-symbol=نام نماد
نماد بسازید نام نماد ضعیف. این گزینه ممکن است بیش از یک بار داده شود.
--globalize-symbol=نام نماد
نماد بدهید نام نماد محدوده جهانی به طوری که خارج از فایل در داخل قابل مشاهده باشد
که تعریف شده است. این گزینه ممکن است بیش از یک بار داده شود.
-w
-کارت عام
اجازه عبارات منظم در نام نمادs در سایر گزینه های خط فرمان استفاده می شود. در
عملگرهای علامت سوال (?)، ستاره (*)، اسلش (\) و براکت ([]) می توانند
در هر جایی از نام نماد استفاده شود. اگر اولین کاراکتر نام نماد the
علامت تعجب (!) سپس حس سوئیچ برای آن علامت معکوس می شود. برای
مثال:
-w -W !foo -W fo*
باعث می شود که objcopy تمام نمادهایی را که با "fo" شروع می شوند به جز نماد ضعیف کند
"فو".
-x
- همه را کنار بگذارید
نمادهای غیر جهانی را از فایل منبع کپی نکنید.
-X
-- دور انداختن-محلی ها
نمادهای محلی تولید شده توسط کامپایلر را کپی نکنید. (اینها معمولاً با L or ..)
-b بایت
--بایت=بایت
اگر interleaving از طریق فعال شده باشد --تقاطع گزینه سپس محدوده را شروع کنید
بایت برای نگه داشتن در بایتبایت. بایت می تواند در محدوده 0 تا باشد وسعت-1، کجا
وسعت مقدار داده شده توسط --تقاطع گزینه.
-i [وسعت]
--interleave[=وسعت]
فقط یک محدوده از هر کدام را کپی کنید وسعت بایت ها (داده های سربرگ تحت تأثیر قرار نمی گیرند). انتخاب کنید
کدام بایت در محدوده کپی را با علامت شروع می کند -- بایت گزینه. عرض را انتخاب کنید
محدوده با -عرض بین برگ گزینه.
این گزینه برای ایجاد فایل برای برنامه نویسی رام مفید است. معمولاً با یک استفاده می شود
هدف خروجی "srec". توجه داشته باشید که objcopy شکایت خواهد کرد اگر شما را مشخص نکنید
-- بایت گزینه نیز هست.
عرض interleave پیش فرض 4 است، بنابراین با -- بایت روی 0 تنظیم کنید، objcopy را کپی می کرد
اولین بایت از هر چهار بایت از ورودی به خروجی.
--interleave-width=عرض
هنگام استفاده با --تقاطع گزینه، کپی عرض بایت در یک زمان شروع از
محدوده بایت هایی که باید کپی شوند توسط -- بایت گزینه و وسعت دامنه
تنظیم شده است با --تقاطع گزینه.
مقدار پیش فرض این گزینه 1 است. مقدار عرض به علاوه بایت مقدار تعیین شده توسط
la -- بایت گزینه نباید از عرض interleave تعیین شده توسط گزینه تجاوز کند --تقاطع
گزینه.
از این گزینه می توان برای ایجاد تصاویر برای دو فلاش 16 بیتی که در یک قرار گرفته اند استفاده کرد
اتوبوس 32 بیتی با عبور -b 0 -i 4 --interleave-width=2 و -b 2 -i 4
--interleave-width=2 به دو objcopy دستورات اگر ورودی '12345678' بود،
خروجی ها به ترتیب '1256' و '3478' خواهند بود.
-p
--خرماهای نگهداری شده
تاریخ دسترسی و اصلاح فایل خروجی را با تاریخ های مربوط به آن تنظیم کنید
فایل ورودی
-D
-- enable-deterministic-archives
عملیات در قطعی حالت هنگام کپی اعضای آرشیو و نوشتن آرشیو
ایندکس، استفاده از صفر برای UID، GID، مُهر زمان، و استفاده از حالتهای فایل ثابت برای همه
فایل های.
If دوتایی با پیکربندی شد -- enable-deterministic-archives، سپس این حالت روشن است
به صورت پیش فرض. می توان آن را با -U گزینه، در زیر
-U
-- غیر فعال کردن - قطعی - آرشیو
Do نه در عمل قطعی حالت این برعکس است -D گزینه، بالا:
هنگام کپی کردن اعضای آرشیو و نوشتن فهرست بایگانی، از UID واقعی آنها، GID، استفاده کنید.
مهر زمان و مقادیر حالت فایل.
این پیش فرض است مگر اینکه دوتایی با پیکربندی شد
-- enable-deterministic-archives.
--اشکال زدایی
در صورت امکان اطلاعات اشکال زدایی را تبدیل کنید. این پیش فرض نیست زیرا فقط
فرمتهای اشکالزدایی خاصی پشتیبانی میشوند و فرآیند تبدیل میتواند زمان بر باشد
مصرف کننده
-- شکاف-پر وال
شکاف های بین بخش ها را با وال. این عملیات برای بار نشانی (LMA)
از بخش ها با افزایش اندازه بخش با قسمت پایین تر انجام می شود
آدرس، و پر کردن فضای اضافی ایجاد شده با وال.
--pad-to نشانی
فایل خروجی را تا آدرس بارگذاری کنید نشانی. این کار با افزایش میزان انجام می شود
اندازه بخش آخر فضای اضافی با مقدار مشخص شده پر می شود
-- شکاف-پر (صفر پیش فرض).
-- تنظیم-شروع وال
آدرس شروع فایل جدید را روی آن تنظیم کنید وال. همه فرمت های فایل شی پشتیبانی نمی کنند
تنظیم آدرس شروع
--تغییر-شروع شامل
-- تنظیم-شروع شامل
آدرس شروع را با اضافه کردن تغییر دهید شامل. همه فرمت های فایل شی از تنظیمات پشتیبانی نمی کنند
آدرس شروع
-- تغییر آدرس ها شامل
--adjust-vma شامل
آدرس های VMA و LMA همه بخش ها و همچنین آدرس شروع را با تغییر تغییر دهید
اضافه کردن شامل. برخی از فرمتهای فایل شی اجازه تغییر آدرسهای بخش را نمیدهند
خودسرانه توجه داشته باشید که این بخش ها را جابجا نمی کند. اگر برنامه انتظار دارد
بخش ها در یک آدرس خاص بارگذاری می شوند و از این گزینه برای تغییر آن استفاده می شود
بخش هایی که در آدرس دیگری بارگیری می شوند، ممکن است برنامه با شکست مواجه شود.
--change-section-address الگوی بخش{=،+،-}وال
--adjust-section-vma الگوی بخش{=،+،-}وال
آدرس VMA و آدرس LMA هر بخش را که مطابقت دارند تنظیم یا تغییر دهید
الگوی بخش. اگر = استفاده می شود، آدرس بخش تنظیم شده است وال. در غیر این صورت، وال is
به آدرس بخش اضافه یا از آن کم می شود. نظرات زیر را ببینید
-- تغییر آدرس ها، در بالا. اگر الگوی بخش با هیچ بخش ورودی مطابقت ندارد
فایل، اخطار صادر خواهد شد، مگر اینکه - هشدارهای بدون تغییر استفاده می شود.
--change-section-lma الگوی بخش{=،+،-}وال
آدرس LMA مربوط به هر بخش را تنظیم یا تغییر دهید الگوی بخش. LMA
آدرس آدرسی است که بخش در هنگام بارگذاری برنامه در حافظه بارگذاری می شود
زمان. به طور معمول این همان آدرس VMA است که آدرس آن است
بخش در زمان اجرای برنامه، اما در برخی از سیستم ها، به ویژه آنهایی که یک برنامه در آنها وجود دارد
در رام نگهداری می شود، این دو می توانند متفاوت باشند. اگر = استفاده می شود، آدرس بخش تنظیم شده است
وال. در غیر این صورت، وال به آدرس بخش اضافه یا از آن کم می شود. را ببینید
نظرات زیر -- تغییر آدرس ها، در بالا. اگر الگوی بخش با هیچ کدام مطابقت ندارد
بخش های فایل ورودی، اخطار صادر خواهد شد، مگر اینکه - هشدارهای بدون تغییر is
استفاده شده.
--change-section-vma الگوی بخش{=،+،-}وال
آدرس VMA مربوط به هر بخش را تنظیم یا تغییر دهید الگوی بخش. آدرس VMA
آدرسی است که پس از شروع برنامه، بخش در آن قرار خواهد گرفت
اجرا کردن معمولاً این همان آدرس LMA است که آدرسی است که در آن قرار دارد
این بخش در حافظه بارگذاری می شود، اما در برخی از سیستم ها، به ویژه آنهایی که a
برنامه در رام برگزار می شود، این دو می توانند متفاوت باشند. اگر = استفاده می شود، آدرس بخش
تنظیم شده است وال. در غیر این صورت، وال به آدرس بخش اضافه یا از آن کم می شود.
نظرات زیر را ببینید -- تغییر آدرس ها، در بالا. اگر الگوی بخش مطابقت ندارد
هر بخش در فایل ورودی، یک هشدار صادر خواهد شد، مگر اینکه - هشدارهای بدون تغییر
استفاده می شود.
--تغییر-هشدار
--adjust-warnings
If --change-section-address or --change-section-lma or --change-section-vma استفاده می شود،
و الگوی بخش با هیچ بخش مطابقت ندارد، یک هشدار صادر کنید. این است
به طور پیش فرض
- هشدارهای بدون تغییر
--بدون تنظیم-اخطار
در این صورت اخطار صادر نکنید --change-section-address or --adjust-section-lma or
--adjust-section-vma استفاده می شود، حتی اگر الگوی بخش با هیچ بخش مطابقت نداشته باشد.
-- مجموعه-بخش-پرچم ها الگوی بخش=پرچم ها
پرچم ها را برای هر بخش مطابقت تنظیم کنید الگوی بخش. پرچم ها آرگومان یک کاما است
رشته جدا شده از نام پرچم اسامی شناخته شده هستند اختصاص دهید, محتویات, بار,
Noload, فقط خواندنی, رمز, داده ها, رام, سهمو اشکال زدایی کردن. می توانید تنظیم کنید محتویات پرچم
برای بخشی که محتوا ندارد، اما پاک کردن آن معنی ندارد
محتویات پرچم بخشی که دارای محتویات است - فقط بخش را به جای آن حذف کنید.
همه پرچمها برای همه فرمتهای فایل شی معنادار نیستند.
--افزودن-بخش نام بخش=نام فایل
یک بخش جدید به نام اضافه کنید نام بخش هنگام کپی کردن فایل مطالب جدید
بخش از فایل گرفته شده است نام فایل. اندازه بخش به اندازه خواهد بود
پرونده. این گزینه فقط روی فرمتهای فایلی کار میکند که میتوانند بخشهایی را با آنها پشتیبانی کنند
نام های دلخواه توجه - ممکن است لازم باشد از -- مجموعه-بخش-پرچم ها گزینه ای برای
ویژگی های بخش جدید ایجاد شده را تنظیم کنید.
--بخش تخلیه نام بخش=نام فایل
محتویات بخش را با نام قرار دهید نام بخش به فایل نام فایل، رونویسی
هر محتوایی که ممکن است قبلاً وجود داشته باشد. این گزینه برعکس است
--افزودن-بخش. این گزینه شبیه به --فقط بخش گزینه به جز آن
یک فایل فرمت شده ایجاد نمی کند، فقط محتویات را به عنوان داده های باینری خام تخلیه می کند.
بدون اعمال هیچ گونه جابجایی گزینه را می توان بیش از یک بار مشخص کرد.
-بخش به روز رسانی نام بخش=نام فایل
محتویات موجود بخشی به نام را جایگزین کنید نام بخش با محتویات فایل
نام فایل. اندازه بخش به اندازه فایل تنظیم می شود. در
پرچم های بخش برای نام بخش بدون تغییر خواهد بود. برای فایل های فرمت ELF بخش به
نگاشت بخش نیز بدون تغییر باقی می ماند، چیزی که استفاده از آن امکان پذیر نیست
---remove-section و پس از آن --افزودن-بخش. گزینه را می توان بیشتر از
یک بار.
توجه - امکان استفاده وجود دارد --تغییر نام-بخش و -بخش به روز رسانی برای به روز رسانی و
یک بخش را از یک خط فرمان تغییر نام دهید. در این صورت، نام بخش اصلی را ارسال کنید
به -بخش به روز رسانی، و نام بخش اصلی و جدید به --تغییر نام-بخش.
--افزودن-نماد نام=[بخش:]ارزش[,پرچم ها]
یک نماد جدید به نام اضافه کنید نام هنگام کپی کردن فایل این گزینه ممکن است مشخص شود
چندین بار. اگر بخش داده می شود، نماد با و مرتبط خواهد شد
نسبت به آن بخش، در غیر این صورت نماد ABS خواهد بود. تعیین نامشخص
بخش منجر به یک خطای کشنده خواهد شد. هیچ بررسی برای ارزش وجود ندارد، خواهد بود
همانطور که مشخص شده است. پرچم های نماد را می توان مشخص کرد و همه پرچم ها مشخص نخواهند شد
برای همه فرمت های فایل شی معنادار است. به طور پیش فرض، نماد جهانی خواهد بود. در
پرچم ویژه 'پیش =دیگران' نماد جدید را در مقابل علامت مشخص شده درج می کند
دیگران، در غیر این صورت نماد(ها) در انتهای جدول نمادها اضافه می شود
ترتیب ظاهر شدن آنها
--تغییر نام-بخش نام قدیمی=نام جدید[,پرچم ها]
تغییر نام بخشی از نام قدیمی به نام جدید، به صورت اختیاری پرچم های بخش را به تغییر دهید
پرچم ها در این فرآیند این مزیت نسبت به استفاده از یک اسکریپت پیوند دهنده برای اجرای آن دارد
تغییر نام دهید به این صورت که خروجی به عنوان یک فایل شی باقی می ماند و به یک پیوند تبدیل نمی شود
قابل اجرا
این گزینه به ویژه زمانی مفید است که فرمت ورودی باینری باشد، زیرا این کار را انجام می دهد
همیشه بخشی به نام .data ایجاد کنید. به عنوان مثال، اگر میخواهید به جای آن یک a ایجاد کنید
بخشی به نام rodata حاوی داده های باینری است که می توانید از خط فرمان زیر استفاده کنید
برای رسیدن به آن:
objcopy -I باینری -O -ب \
--rename-section .data=.rodata,alloc,load,readonly,data,content \
- نام های بخش طولانی {فعال کردن، غیرفعال کردن، حفظ کردن}
کنترل نام بخش های طولانی هنگام پردازش "COFF" و "PE-COFF"
فرمت های شی رفتار پیش فرض، نگه داشتن، برای حفظ نام بخش های طولانی در صورت وجود است
در فایل ورودی وجود دارد. در قادر ساختن و از کار انداختن گزینه های به زور فعال یا
غیرفعال کردن استفاده از نام بخش های طولانی در شی خروجی. چه زمانی از کار انداختن در حال اجرا است،
هر نام بخش طولانی در شی ورودی کوتاه خواهد شد. در قادر ساختن گزینه خواهد شد
فقط نام بخش های طولانی را در صورتی که در ورودی ها وجود داشته باشد منتشر می کند. این بیشتر یکسان است
as نگه داشتن، اما تعریف نشده باقی مانده است که آیا قادر ساختن گزینه ممکن است ایجاد را مجبور کند
یک جدول رشته خالی در فایل خروجی.
-- تغییر - پیشرو - کاراکتر
برخی از فرمتهای فایل شی از کاراکترهای ویژه در ابتدای نمادها استفاده میکنند. بیشترین
معمولاً چنین کاراکتری underscore است که کامپایلرها اغلب قبل از هر نماد اضافه می کنند.
این گزینه می گوید objcopy برای تغییر کاراکتر پیشرو هر نماد در هنگام آن
بین فرمت های فایل شی تبدیل می شود. اگر فرمت های فایل شی از همان پیشرو استفاده می کنند
شخصیت، این گزینه هیچ تاثیری ندارد. در غیر این صورت، یک کاراکتر اضافه می کند یا a را حذف می کند
شخصیت، یا تغییر یک کاراکتر، در صورت لزوم.
--حذف-پیشرو-کاره
اگر اولین کاراکتر یک نماد جهانی یک نماد خاص باشد از کاراکتر اصلی استفاده می شود
با فرمت فایل شی، کاراکتر را حذف کنید. رایج ترین نماد پیشرو
شخصیت زیر خط است. این گزینه یک زیرخط اصلی را از همه جهانی حذف می کند
نمادها این می تواند مفید باشد اگر بخواهید اشیاء فایل های مختلف را به هم پیوند دهید
قالب هایی با قراردادهای مختلف برای نام نمادها. این با
-- تغییر - پیشرو - کاراکتر زیرا همیشه نام نماد را در صورت لزوم تغییر می دهد،
صرف نظر از فرمت فایل شی فایل خروجی.
--reverse-bytes=تعداد
بایت ها را در یک بخش با محتوای خروجی معکوس کنید. طول یک بخش باید یکنواخت باشد
تقسیم بر مقدار داده شده به منظور امکان انجام مبادله. معکوس کردن
قبل از انجام interleaving انجام می شود.
این گزینه معمولاً در تولید تصاویر ROM برای سیستم های هدف مشکل دار استفاده می شود.
به عنوان مثال، در برخی از بردهای هدف، کلمات 32 بیتی که از رام های 8 بیتی واکشی شده اند، دوباره
بدون توجه به ترتیب بایت های CPU، به ترتیب بایت اندک اندین مونتاژ می شوند. وابسته به
مدل برنامه نویسی، endianness ROM ممکن است نیاز به اصلاح داشته باشد.
یک فایل ساده با یک بخش شامل هشت بایت زیر در نظر بگیرید: 12345678.
با استفاده از --reverse-bytes=2 برای مثال بالا، بایت های موجود در فایل خروجی خواهد بود
سفارش 21436587.
با استفاده از --reverse-bytes=4 برای مثال بالا، بایت های موجود در فایل خروجی خواهد بود
سفارش 43218765.
با استفاده از --reverse-bytes=2 برای مثال بالا، به دنبال آن --reverse-bytes=4 در
فایل خروجی، بایت های فایل خروجی دوم 34127856 سفارش داده می شود.
--srec-len=IVAL
فقط برای خروجی srec معنی دار است. حداکثر طول Srecords را تنظیم کنید
تولید شده به IVAL. این طول هر دو فیلد آدرس، داده و crc را پوشش می دهد.
--srec-forceS3
فقط برای خروجی srec معنی دار است. از تولید رکوردهای S1/S2 خودداری کنید و فقط S3 ایجاد کنید
فرمت ضبط
- تعریف مجدد-sym قدیمی=جدید
نام یک نماد را تغییر دهید قدیمی، به جدید. این می تواند مفید باشد زمانی که کسی در حال تلاش برای پیوند است
دو چیز با هم که شما هیچ منبعی برای آنها ندارید، و تداخل نام وجود دارد.
--redefine-syms=نام فایل
درخواست - تعریف مجدد-sym به هر جفت نماد "قدیمی جدید" در فایل ذکر شده است نام فایل.
نام فایل به سادگی یک فایل مسطح، با یک جفت نماد در هر خط است. نظرات خط ممکن است
معرفی شده توسط کاراکتر هش. این گزینه ممکن است بیش از یک بار داده شود.
-- تضعیف کردن
همه نمادهای سراسری فایل را به ضعیف بودن تغییر دهید. این می تواند هنگام ساختن مفید باشد
شی که با استفاده از -R گزینه پیوند دهنده
این گزینه فقط در صورت استفاده از فرمت فایل شی که از ضعیف پشتیبانی می کند مؤثر است
نمادها
--keep-symbols=نام فایل
درخواست ---نماد گزینه ای برای هر نماد فهرست شده در فایل نام فایل. نام فایل is
به سادگی یک فایل مسطح، با یک نام نماد در هر خط. نظرات خط ممکن است توسط
شخصیت هش این گزینه ممکن است بیش از یک بار داده شود.
--strip-symbols=نام فایل
درخواست نوار-نماد گزینه ای برای هر نماد فهرست شده در فایل نام فایل. نام فایل is
به سادگی یک فایل مسطح، با یک نام نماد در هر خط. نظرات خط ممکن است توسط
شخصیت هش این گزینه ممکن است بیش از یک بار داده شود.
--strip-unneeded-symbols=نام فایل
درخواست --نوار-بی نیاز-نماد گزینه ای برای هر نماد فهرست شده در فایل نام فایل.
نام فایل به سادگی یک فایل مسطح، با یک نام نماد در هر خط است. نظرات خط ممکن است
معرفی شده توسط کاراکتر هش. این گزینه ممکن است بیش از یک بار داده شود.
--keep-global-symbols=نام فایل
درخواست ------جهانی-نماد گزینه ای برای هر نماد فهرست شده در فایل نام فایل.
نام فایل به سادگی یک فایل مسطح، با یک نام نماد در هر خط است. نظرات خط ممکن است
معرفی شده توسط کاراکتر هش. این گزینه ممکن است بیش از یک بار داده شود.
--localize-symbols=نام فایل
درخواست -محلی کردن-نماد گزینه ای برای هر نماد فهرست شده در فایل نام فایل. نام فایل
به سادگی یک فایل مسطح، با یک نام نماد در هر خط است. نظرات خط ممکن است معرفی شود
توسط کاراکتر هش این گزینه ممکن است بیش از یک بار داده شود.
--globalize-symbols=نام فایل
درخواست --جهانی شدن-نماد گزینه ای برای هر نماد فهرست شده در فایل نام فایل. نام فایل
به سادگی یک فایل مسطح، با یک نام نماد در هر خط است. نظرات خط ممکن است معرفی شود
توسط کاراکتر هش این گزینه ممکن است بیش از یک بار داده شود.
--symbols-weaken=نام فایل
درخواست -ضعف-نماد گزینه ای برای هر نماد فهرست شده در فایل نام فایل. نام فایل is
به سادگی یک فایل مسطح، با یک نام نماد در هر خط. نظرات خط ممکن است توسط
شخصیت هش این گزینه ممکن است بیش از یک بار داده شود.
--alt-machine-code=شاخص
اگر معماری خروجی دارای کدهای ماشین جایگزین است، از آن استفاده کنید شاخصکد هفتم در عوض
از یک پیش فرض این در مواردی مفید است که به یک ماشین یک کد رسمی اختصاص داده شود و
زنجیره ابزار کد جدید را می پذیرد، اما سایر برنامه ها همچنان به آن بستگی دارند
کد اصلی استفاده می شود برای معماری های مبتنی بر ELF اگر شاخص جایگزین انجام می دهد
وجود ندارد، سپس مقدار به عنوان یک عدد مطلق در نظر گرفته می شود که در آن ذخیره می شود
فیلد e_machine هدر ELF.
- متن قابل نوشتن
متن خروجی را به عنوان قابل نوشتن علامت گذاری کنید. این گزینه برای همه فایل های شی معنادار نیست
فرمت.
---نوشته خواندنی
متن خروجی را محافظت شده بنویسید. این گزینه برای همه اشیا معنی ندارد
فرمت های فایل
--خالص
فایل خروجی را به عنوان صفحه تقاضا علامت گذاری کنید. این گزینه برای همه اشیا معنی ندارد
فرمت های فایل
-- نجس
فایل خروجی را به عنوان ناخالص علامت گذاری کنید. این گزینه برای همه فایل های شی معنادار نیست
فرمت.
--پیشوند-symbols=رشته
پیشوند همه نمادها در فایل خروجی با رشته.
--prefix-sections=رشته
پیشوند همه نام بخش ها در فایل خروجی با رشته.
--prefix-alloc-sections=رشته
پیشوند تمام نام های تمام بخش های اختصاص داده شده در فایل خروجی با رشته.
--add-gnu-debuglink=مسیر به فایل
یک بخش .gnu_debuglink ایجاد می کند که حاوی ارجاع به آن است مسیر به فایل و اضافه می کند
آن را به فایل خروجی. توجه: فایل در مسیر به فایل باید وجود داشته باشد. بخشی از
فرآیند افزودن بخش .gnu_debuglink شامل تعبیه جمع کنترلی از آن است
محتویات فایل اطلاعات اشکال زدایی را وارد بخش کنید.
اگر فایل اطلاعات اشکال زدایی در یک مکان ساخته شده باشد اما قرار است در یک مکان نصب شود
بعداً وارد مکان دیگری شوید سپس از مسیر نصب شده استفاده نکنید
محل. در --add-gnu-debuglink گزینه شکست خواهد خورد زیرا فایل نصب شده این کار را انجام می دهد
هنوز وجود ندارد در عوض فایل اطلاعات اشکال زدایی را در دایرکتوری فعلی قرار داده و از آن استفاده کنید
--add-gnu-debuglink گزینه بدون هیچ گونه مؤلفه دایرکتوری، مانند این:
objcopy --add-gnu-debuglink=foo.debug
در زمان اشکالزدایی، دیباگر سعی میکند فایل اطلاعات اشکالزدایی جداگانه را در یک جستجو کند
مجموعه ای از مکان های شناخته شده مجموعه دقیق این مکان ها بسته به شرایط متفاوت است
توزیع استفاده می شود، اما معمولاً شامل موارد زیر است:
"* دایرکتوری مشابه فایل اجرایی."
"* یک زیر شاخه از دایرکتوری حاوی فایل اجرایی"
اشکال زدایی نامیده می شود
"* دایرکتوری اشکال زدایی جهانی مانند /usr/lib/debug."
تا زمانی که فایل اطلاعات اشکال زدایی قبلاً در یکی از این مکان ها نصب شده باشد
دیباگر اجرا می شود همه چیز باید درست کار کند.
--keep-file-symbols
هنگام حذف یک فایل، شاید با -- strip-debug or نوار-بی نیاز، هر کدام را حفظ کنید
نمادهایی که نام فایل منبع را مشخص می کنند، که در غیر این صورت حذف می شوند.
--only-keep-debug
یک فایل را پاک کنید، محتویات هر قسمتی را که توسط آن حذف نمی شود حذف کنید
-- strip-debug و بخش های اشکال زدایی را دست نخورده باقی می گذاریم. در فایل های ELF، این کار حفظ می شود
تمام بخش های یادداشت در خروجی
توجه - سرصفحه های بخش های برش خورده از جمله آنها حفظ می شود
اندازه ها، اما محتویات بخش کنار گذاشته شده است. سرفصل های بخش هستند
حفظ می شود تا ابزارهای دیگر بتوانند فایل دیباگ اینفو را با فایل واقعی مطابقت دهند
قابل اجرا، حتی اگر آن فایل اجرایی به فضای آدرس دیگری منتقل شده باشد.
هدف این است که این گزینه در ارتباط با --add-gnu-debuglink
برای ایجاد دو قسمت اجرایی یکی دودویی stripped که فضای کمتری را اشغال می کند
در RAM و در یک توزیع و دوم فایل اطلاعات اشکال زدایی که فقط است
در صورت نیاز به توانایی های اشکال زدایی مورد نیاز است. روش پیشنهادی برای ایجاد این
فایل ها به شرح زیر است:
1.
"فو" پس...
1.
یک فایل حاوی اطلاعات اشکال زدایی ایجاد کنید.
1.
stripped اجرایی
1.
برای افزودن پیوندی به اطلاعات اشکال زدایی در فایل اجرایی stripped.
توجه --- انتخاب ".dbg" به عنوان پسوند برای فایل اطلاعات اشکال زدایی دلخواه است.
همچنین مرحله "--only-keep-debug" اختیاری است. در عوض می توانید این کار را انجام دهید:
1.
1.
1.
1.
به عنوان مثال، فایل اشاره شده توسط --add-gnu-debuglink می تواند اجرایی کامل باشد. آی تی
لازم نیست فایلی باشد که توسط --only-keep-debug سوئیچ.
توجه --- این سوئیچ فقط برای استفاده در فایل های کاملاً پیوند شده در نظر گرفته شده است. نمی سازد
منطقی است که از آن در فایل های شی استفاده کنید که در آن اطلاعات اشکال زدایی ممکن است ناقص باشد.
علاوه بر این ویژگی gnu_debuglink در حال حاضر تنها از وجود یک نام فایل پشتیبانی می کند
حاوی اطلاعات اشکال زدایی، نه چندین نام فایل در یک فایل یک در هر شی
اساس.
-- strip-dwo
محتویات تمام بخشهای DWARF .dwo را حذف کنید و اشکالزدایی باقیمانده باقی بماند
بخش ها و همه نمادها دست نخورده است. این گزینه برای استفاده توسط کامپایلر به عنوان در نظر گرفته شده است
بخشی از -gsplit-dwarf گزینه ای که اطلاعات اشکال زدایی را بین فایل .o تقسیم می کند
و یک فایل dwo جداگانه. کامپایلر تمام اطلاعات اشکال زدایی را به صورت یکسان تولید می کند
فایل، سپس از --extract-dwo گزینه ای برای کپی کردن بخش های .dwo در فایل .dwo،
سپس -- strip-dwo گزینه ای برای حذف آن بخش ها از فایل .o اصلی.
--extract-dwo
محتویات تمام بخش های DWARF .dwo را استخراج کنید. را ببینید -- strip-dwo گزینه ای برای بیشتر
اطلاعات.
---تراز کردن فایل تعداد
تراز فایل را مشخص کنید. بخشهای موجود در فایل همیشه با آفست فایل شروع میشوند
که مضرب این عدد هستند. این به طور پیش فرض 512 است. [این گزینه خاص است
به اهداف PE.]
--پشته ذخیره
--پشته ذخیره,مرتکب شدن
تعداد بایتهای حافظه برای ذخیره (و به صورت اختیاری) مورد استفاده را مشخص کنید
پشته برای این برنامه [این گزینه مخصوص اهداف PE است.]
---پایه تصویر ارزش
استفاده کنید ارزش به عنوان آدرس پایه برنامه یا dll شما. این کمترین حافظه است
مکانی که هنگام بارگیری برنامه یا dll شما استفاده می شود. برای کاهش نیاز به
تغییر مکان و بهبود عملکرد dll های خود، هر کدام باید یک آدرس پایه منحصر به فرد داشته باشند
و با هیچ dll دیگری همپوشانی نداشته باشند. پیش فرض برای فایل های اجرایی 0x400000 است و
0x10000000 برای dll. [این گزینه مخصوص اهداف PE است.]
---تراز بخش تعداد
تراز بخش را تنظیم می کند. بخشهای حافظه همیشه از آدرسهایی شروع میشوند که
مضربی از این عدد هستند. پیشفرض 0x1000 است. [این گزینه مخصوص PE است
اهداف.]
--پشته ذخیره
--پشته ذخیره,مرتکب شدن
تعداد بایتهای حافظه برای ذخیره (و به صورت اختیاری) مورد استفاده را مشخص کنید
پشته برای این برنامه [این گزینه مخصوص اهداف PE است.]
--زیر سیستم که
--زیر سیستم که:عمده
--زیر سیستم که:عمده.خردسال
زیرسیستمی را مشخص می کند که برنامه شما تحت آن اجرا می شود. ارزش های قانونی برای
که عبارتند از "بومی"، "ویندوز"، "کنسول"، "posix"، "efi-app"، "efi-bsd"، "efi-rtd"،
"sal-rtd" و "xbox". شما می توانید به صورت اختیاری نسخه زیرسیستم را نیز تنظیم کنید. عددی
مقادیر نیز برای آنها پذیرفته شده است که. [این گزینه مخصوص اهداف PE است.]
--عصاره-نماد
پرچم ها و نمادهای بخش فایل را نگه دارید اما تمام داده های بخش را حذف کنید. به طور مشخص،
گزینه:
*
*
*
این گزینه برای ساخت a استفاده می شود .sym فایل برای یک هسته VxWorks. همچنین می تواند یک باشد
راه مفید برای کاهش اندازه a -- فقط نمادها فایل ورودی لینکر
--فشرده-اشکال-بخش ها
بخش های اشکال زدایی DWARF را با استفاده از zlib با SHF_COMPRESSED از ELF ABI فشرده کنید. توجه داشته باشید -
اگر فشرده سازی واقعاً یک بخش ایجاد کند بزرگتر، سپس فشرده نمی شود.
--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
برای فایلهای ELF، این گزینهها نحوه فشردهسازی بخشهای اشکالزدایی DWARF را کنترل میکنند.
--compress-debug-sections=none برابر است با --فشرده-debug-sections.
--compress-debug-sections=zlib و --compress-debug-sections=zlib-gabi معادل هستند
به --فشرده-اشکال-بخش ها. --compress-debug-sections=zlib-gnu کوتوله را فشرده می کند
اشکال زدایی بخش ها با استفاده از zlib. بخش های اشکال زدایی برای شروع تغییر نام داده می شوند zdebug
بجای اشکال زدایی. توجه داشته باشید - اگر فشرده سازی واقعاً یک بخش ایجاد کند بزرگتر، و سپس
فشرده نشده است و نام آن تغییر نمی کند.
--فشرده-debug-sections
بخش های اشکال زدایی DWARF را با استفاده از zlib از حالت فشرده خارج کنید. نام بخش اصلی
بخش های فشرده ترمیم می شوند.
-V
- نسخه
نمایش شماره نسخه از objcopy.
-v
-- پرحرف
خروجی پرمخاطب: لیست تمام فایل های شی اصلاح شده. در مورد آرشیو، objcopy -V
تمام اعضای آرشیو را فهرست می کند.
--کمک
نمایش خلاصه ای از گزینه های به objcopy.
-- اطلاعات
نمایش لیستی که تمام معماری ها و فرمت های شی موجود را نشان می دهد.
@پرونده
گزینه های خط فرمان را از پرونده. گزینه های خوانده شده به جای گزینه درج می شوند
اصلی @پرونده گزینه. اگر پرونده وجود ندارد، یا نمی توان آن را خواند، پس گزینه
به معنای واقعی کلمه رفتار خواهد شد و حذف نخواهد شد.
گزینه ها در پرونده با فضای خالی از هم جدا می شوند. ممکن است یک کاراکتر فضای خالی گنجانده شود
در یک گزینه با احاطه کردن کل گزینه به صورت تک یا دو گیومه. هر
کاراکتر (از جمله بک اسلش) ممکن است با پیشوند کردن کاراکتر to be گنجانده شود
همراه با اسلش. در پرونده ممکن است خود حاوی @ اضافی باشدپرونده گزینه ها؛ هر
چنین گزینه هایی به صورت بازگشتی پردازش می شوند.
با استفاده از خدمات onworks.net از arm-linux-gnueabihf-objcopy به صورت آنلاین استفاده کنید