AR(1) GNU Development Tools AR(1)

loongarch64-linux-gnu-ar - ایجاد، ویرایش و استخراج از آرشیوهای باینری معماری LoongArch64

loongarch64-linux-gnu-ar [-X32_64]
[-]p[mod]
[--plugin name]
[--target bfdname]
[--output dirname]
[--record-libdeps libdeps]
[--thin]
[relpos] [count] archive [member...] loongarch64-linux-gnu-ar -M [< mri-script]

برنامه ar گنو به ایجاد، ویرایش و استخراج از آرشیوها می‌پردازد. یک آرشیو یک تک‌فایل است که مجموعه‌ای از فایل‌های دیگر را در ساختاری نگهداری می‌کند که امکان بازیابی فایل‌های مجزای اصلی (که اعضای آرشیو نامیده می‌شوند) را فراهم می‌سازد.

محتوای فایل‌های اصلی، حالت (مجوزها)، زمان‌بندی، مالک و گروه در آرشیو نگهداری شده و هنگام استخراج بازیابی می‌شوند.

ابزار ar گنو می‌تواند آرشیوهایی را نگهداری کند که اعضای آن نام‌هایی با هر طولی دارند؛ با این حال، بسته به پیکربندی ar روی سیستم شما، ممکن است برای سازگاری با فرمت‌های آرشیو نگهداری‌شده توسط ابزارهای دیگر، محدودیتی بر طول نام اعضا اعمال شود. در صورت وجود، این محدودیت اغلب ۱۵ نویسه (معمول در فرمت‌های مرتبط با a.out) یا ۱۶ نویسه (معمول در فرمت‌های مرتبط با coff) است.

ابزار ar یک ابزار باینری به شمار می‌رود زیرا آرشیوهایی از این دست اغلب به عنوان کتابخانه‌ها شامل زیربرنامه‌های کاربردی پرمصرف استفاده می‌شوند. از آنجا که کتابخانه‌ها اغلب به کتابخانه‌های دیگر وابسته هستند، ar می‌تواند وابستگی‌های یک کتابخانه را در صورت مشخص شدن گزینه --record-libdeps ثبت کند.

هنگامی که اصلاح‌کننده s را مشخص کنید، ar یک نمایه (index) از نمادهای تعریف‌شده در ماژول‌های شیء قابل بازنشانی در آرشیو ایجاد می‌کند. پس از ایجاد، این نمایه هر زمان که ar تغییری در محتویات ایجاد کند (به جز عملیات به‌روزرسانی q) در آرشیو به‌روزرسانی می‌شود. آرشیوی با چنین نمایه‌ای پیوند دادن به کتابخانه را سریع‌تر می‌کند.

می‌توانید از nm -s یا nm --print-armap برای فهرست کردن این جدول نمایه استفاده کنید. اگر آرشیو فاقد جدول باشد، می‌توان از شکل دیگری از ar به نام ranlib فقط برای افزودن جدول استفاده کرد.

ابزار ar گنو می‌تواند به صورت اختیاری یک آرشیو نازک (thin) ایجاد کند که شامل نمایه نمادها و ارجاع به نسخه‌های اصلی فایل‌های عضو آرشیو است. این قابلیت برای ساخت کتابخانه‌ها جهت استفاده درون یک درخت ساخت محلی مفید است، جایی که انتظار می‌رود اشیاء قابل بازنشانی همچنان در دسترس باشند و کپی کردن محتوای هر شیء فقط زمان و فضا را هدر می‌دهد.

یک آرشیو می‌تواند یا نازک (thin) باشد یا معمولی. نمی‌تواند هم‌زمان هر دو باشد. پس از ایجاد آرشیو، فرمت آن بدون حذف اولیه و سپس ایجاد یک آرشیو جدید به جای آن، قابل تغییر نیست.

آرشیوهای نازک همچنین تخت (flattened) می‌شوند، به طوری که افزودن یک آرشیو نازک به یک آرشیو نازک دیگر باعث تودرتو شدن آن نمی‌شود (برخلاف آنچه در آرشیوهای معمولی رخ می‌دهد). در عوض، عناصر آرشیو اول به صورت جداگانه به آرشیو دوم اضافه می‌شوند.

مسیرهای منتهی به عناصر آرشیو به صورت نسبی نسبت به خود فایل آرشیو ذخیره می‌شوند.

ابزار ar گنو طوری طراحی شده است که با دو شیوه مختلف سازگار باشد. شما می‌توانید فعالیت آن را با استفاده از گزینه‌های خط فرمان، مانند انواع مختلف ar در سیستم‌های یونیکس کنترل کنید؛ یا اگر گزینه خط فرمان تکی -M را مشخص کنید، می‌توانید آن را با یک اسکریپت از طریق ورودی استاندارد، مانند برنامه MRI "librarian" کنترل نمایید.

ابزار ar گنو به شما امکان می‌دهد کد عملیات p و فلگ‌های اصلاح‌کننده mod را به هر ترتیبی درون اولین آرگومان خط فرمان ترکیب کنید.

در صورت تمایل، می‌توانید اولین آرگومان خط فرمان را با یک خط تیره شروع کنید.

حرف کلیدی p مشخص می‌کند چه عملیاتی اجرا شود؛ این حرف می‌تواند هر یک از موارد زیر باشد، اما باید فقط یکی از آن‌ها را مشخص کنید:

حذف ماژول‌ها از آرشیو. نام ماژول‌های مورد نظر برای حذف را به عنوان member... مشخص کنید؛ اگر فایلی برای حذف مشخص نکنید، آرشیو دست‌نخورده باقی می‌ماند.

اگر اصلاح‌کننده v را مشخص کنید، ar هر ماژول را هنگام حذف فهرست می‌کند.

از این عملیات برای جابه‌جایی اعضا در یک آرشیو استفاده کنید.

اگر یک نماد در بیش از یک عضو تعریف شده باشد، ترتیب اعضا در یک آرشیو می‌تواند در نحوه پیوند برنامه‌ها با استفاده از کتابخانه تفاوت ایجاد کند.

اگر هیچ اصلاح‌کننده‌ای با "m" استفاده نشود، هر عضوی که در آرگومان‌های member نام ببرید به انتهای آرشیو منتقل می‌شود؛ می‌توانید از اصلاح‌کننده‌های a، b یا i برای انتقال آن‌ها به یک مکان مشخص استفاده کنید.

چاپ اعضای مشخص‌شده آرشیو در فایل خروجی استاندارد. اگر اصلاح‌کننده v مشخص شده باشد، نام عضو پیش از کپی محتوای آن در خروجی استاندارد نمایش داده می‌شود.

اگر آرگومان member را مشخص نکنید، تمام فایل‌های موجود در آرشیو چاپ می‌شوند.

الحاق سریع؛ از نظر تاریخی، فایل‌های member... را بدون بررسی جایگزینی به انتهای archive اضافه می‌کند.

اصلاح‌کننده‌های a، b و i بر این عملیات تأثیری ندارند؛ اعضای جدید همیشه در انتهای آرشیو قرار می‌گیرند.

اصلاح‌کننده v باعث می‌شود ar هر فایل را هنگام الحاق فهرست کند.

از آنجا که هدف این عملیات سرعت است، پیاده‌سازی‌های ar این امکان را دارند که جدول نمادهای آرشیو را در صورت وجود به‌روزرسانی نکنند. با این حال سیستم‌های بسیار زیادی فرض می‌کنند که جداول نمادها همیشه به‌روز هستند، بنابراین ar گنو حتی با یک الحاق سریع نیز جدول را دوباره می‌سازد.

توجه: ar گنو دستور qs را مترادفی برای r می‌داند - جایگزینی فایل‌های موجود در آرشیو و الحاق فایل‌های جدید در انتها.

درج فایل‌های member... در archive (همراه با جایگزینی). این عملیات با q متفاوت است، زیرا هر عضو از قبل موجود در صورت تطابق نام با فایل‌های در حال اضافه شدن، حذف می‌شود.

اگر یکی از فایل‌های نام‌برده در member... وجود نداشته باشد، ar پیام خطا نمایش می‌دهد و اعضای موجود در آرشیو مطابق با آن نام را دست‌نخورده باقی می‌گذارد.

به طور پیش‌فرض، اعضای جدید در انتهای فایل اضافه می‌شوند؛ اما می‌توانید از یکی از اصلاح‌کننده‌های a، b یا i برای درخواست جای‌گذاری نسبت به یکی از اعضای موجود استفاده کنید.

اصلاح‌کننده v همراه با این عملیات یک خط خروجی برای هر فایل درج‌شده نمایش می‌دهد، همراه با یکی از حروف a یا r تا نشان دهد فایل الحاق شده است (هیچ عضو قدیمی حذف نشده) یا جایگزین شده است.

افزودن یک نمایه به آرشیو، یا به‌روزرسانی آن در صورت وجود. توجه داشته باشید این دستور استثنایی بر این قاعده است که تنها یک حرف دستور می‌تواند وجود داشته باشد، زیرا می‌توان از آن به عنوان یک دستور یا یک اصلاح‌کننده استفاده کرد. در هر دو حالت یک کار یکسان انجام می‌دهد.
نمایش یک جدول شامل فهرست محتویات archive، یا فایل‌های ذکرشده در member... که در آرشیو وجود دارند. معمولاً فقط نام عضو نمایش داده می‌شود، اما اگر اصلاح‌کننده O مشخص شده باشد، آفست متناظر عضو نیز نمایش می‌یابد. در نهایت، برای دیدن حالت‌ها (مجوزها)، زمان‌بندی، مالک، گروه و اندازه باید اصلاح‌کننده v گنجانده شود.

اگر فایلی در member مشخص نکنید، تمام فایل‌های موجود در آرشیو فهرست می‌شوند.

اگر بیش از یک فایل با نام یکسان (مثلاً fie) در یک آرشیو (مثلاً b.a) وجود داشته باشد، دستور ar t b.a fie فقط اولین نمونه را فهرست می‌کند؛ برای دیدن همه آن‌ها، باید یک فهرست‌بندی کامل درخواست کنید - در مثال ما، ar t b.a.

استخراج اعضا (با نام member) از آرشیو. می‌توانید از اصلاح‌کننده v همراه با این عملیات استفاده کنید تا درخواست کنید ar هر نام را هنگام استخراج فهرست کند.

اگر فایلی در member مشخص نکنید، تمام فایل‌های موجود در آرشیو استخراج می‌شوند.

فایل‌ها را نمی‌توان از یک آرشیو نازک استخراج کرد، و همچنین محدودیت‌هایی برای استخراج از آرشیوهای ایجادشده با P وجود دارد: مسیرها نباید مطلق باشند، نباید شامل ".." باشند، و هر زیرپوشه‌ای در مسیرها باید وجود داشته باشد. اگر می‌خواهید از این محدودیت‌ها اجتناب کنید، از گزینه --output برای مشخص کردن پوشه خروجی استفاده کنید.

تعدادی از اصلاح‌کننده‌ها (mod) می‌توانند بلافاصله پس از حرف کلیدی p بیایند تا تغییرات رفتاری یک عملیات را مشخص کنند:

افزودن فایل‌های جدید پس از یک عضو موجود در آرشیو. اگر از اصلاح‌کننده a استفاده می‌کنید، نام یک عضو موجود در آرشیو باید به عنوان آرگومان relpos قبل از مشخص کردن archive حضور داشته باشد.
افزودن فایل‌های جدید قبل از یک عضو موجود در آرشیو. اگر از اصلاح‌کننده b استفاده می‌کنید، نام یک عضو موجود در آرشیو باید به عنوان آرگومان relpos قبل از مشخص کردن archive حضور داشته باشد (مشابه i).
ایجاد آرشیو. اگر هنگام درخواست به‌روزرسانی، archive مشخص‌شده وجود نداشته باشد، همیشه ایجاد می‌شود. اما هشدار داده خواهد شد مگر اینکه با استفاده از این اصلاح‌کننده از قبل مشخص کنید که انتظار ایجاد آن را دارید.
فعالیت در حالت قطعیت‌یافته (deterministic). هنگام افزودن فایل‌ها و نمایه آرشیو، از صفر برای UIDها، GIDها و زمان‌بندی‌ها استفاده می‌کند و حالت‌های فایل یکسانی را برای همه فایل‌ها به کار می‌گیرد. وقتی از این گزینه استفاده شود، در صورتی که ar با گزینه‌ها و فایل‌های ورودی یکسان اجرا شود، اجراهای چندگانه فایل‌های خروجی یکسانی ایجاد خواهند کرد، صرف‌نظر از مالکان، گروه‌ها، مجوزها یا زمان‌های تغییر فایل‌های ورودی.

اگر binutils با --enable-deterministic-archives پیکربندی شده باشد، این حالت به طور پیش‌فرض روشن است. می‌توان آن را با اصلاح‌کننده U در زیر غیرفعال کرد.

کوتاه کردن نام‌ها در آرشیو. ابزار ar گنو به طور معمول نام فایل‌ها با هر طولی را مجاز می‌داند. این امر باعث می‌شود آرشیوهایی ایجاد کند که با برنامه بومی ar در برخی سیستم‌ها سازگار نیستند. اگر این موضوع نگران‌کننده است، می‌توان از اصلاح‌کننده f برای کوتاه کردن نام فایل‌ها هنگام قرار دادن آن‌ها در آرشیو استفاده کرد.
درج فایل‌های جدید قبل از یک عضو موجود در آرشیو. اگر از اصلاح‌کننده i استفاده می‌کنید، نام یک عضو موجود در آرشیو باید به عنوان آرگومان relpos قبل از مشخص کردن archive حضور داشته باشد (مشابه b).
مشخص کردن وابستگی‌های این کتابخانه. وابستگی‌ها باید بلافاصله پس از این نویسه گزینه بیایند، باید از همان ساختار خط فرمان پیونددهنده (linker) استفاده کنند و باید درون یک آرگومان واحد مشخص شوند. یعنی اگر چندین مورد نیاز است، باید برای تشکیل یک آرگومان خط فرمان تکی درون نقل‌قول قرار گیرند. به عنوان مثال l "-L/usr/local/lib -lmydep1 -lmydep2"
استفاده از پارامتر count. این مورد در صورتی استفاده می‌شود که چندین مدخل با نام یکسان در آرشیو وجود داشته باشد. مورد شماره count از نام داده‌شده را از آرشیو استخراج یا حذف می‌کند.
حفظ تاریخ‌های اصلی اعضا هنگام استخراج آن‌ها. اگر این اصلاح‌کننده را مشخص نکنید، فایل‌های استخراج‌شده از آرشیو با زمان استخراج مهر زمانی می‌خورند.
نمایش آفست‌های اعضا درون آرشیو. همراه با گزینه t استفاده شود.
استفاده از مسیر کامل نام هنگام تطبیق یا ذخیره نام‌ها در آرشیو. آرشیوهای ایجادشده با نام‌های مسیر کامل با استاندارد POSIX سازگار نیستند و بنابراین ممکن است با ابزارهایی غیر از ابزارهای به‌روز گنو کار نکنند. ویرایش چنین آرشیوهایی با ar گنو بدون استفاده از P نام‌های مسیر کامل را حذف می‌کند مگر اینکه آرشیو یک آرشیو نازک باشد. توجه داشته باشید که P ممکن است هنگام افزودن فایل‌ها به یک آرشیو نازک مفید باشد، زیرا r بدون P هنگام انتخاب عنصری برای جایگزینی، مسیر را نادیده می‌گیرد. بنابراین
ar rcST archive.a subdir/file1 subdir/file2 file1

منجر به این می‌شود که اولین "subdir/file1" با "file1" از دایرکتوری جاری جایگزین شود. افزودن P از این جایگزینی جلوگیری می‌کند.

نوشتن نمایه فایل شیء در آرشیو، یا به‌روزرسانی نمایه موجود، حتی اگر هیچ تغییر دیگری در آرشیو ایجاد نشود. می‌توانید از این فلگ اصلاح‌کننده همراه با هر عملیاتی، یا به تنهایی استفاده کنید. اجرای ar s روی یک آرشیو معادل اجرای ranlib روی آن است.
عدم تولید جدول نمادهای آرشیو. این می‌تواند سرعت ساخت یک کتابخانه بزرگ را در چند مرحله افزایش دهد، اما در صورتی که آرشیو حاصل با پیونددهنده استفاده شود، تأثیر منفی بر عملکرد خواهد گذاشت. برای ساخت جدول نمادها، باید اصلاح‌کننده S را در آخرین اجرای ar حذف کنید، یا باید ranlib را روی آرشیو اجرا نمایید.
نام مستعار منسوخ‌شده برای --thin. گزینه T توصیه نمی‌شود زیرا در بسیاری از پیاده‌سازی‌های ar، گزینه T معنای متفاوتی طبق مشخصات X/Open System Interface دارد.
به طور معمول، ar r... تمام فایل‌های فهرست‌شده را در آرشیو درج می‌کند. اگر می‌خواهید فقط آن دسته از فایل‌های فهرست‌شده را درج کنید که جدیدتر از اعضای موجود با همان نام‌ها هستند، از این اصلاح‌کننده استفاده کنید. اصلاح‌کننده u فقط برای عملیات r (جایگزینی) مجاز است. به ویژه، ترکیب qu مجاز نیست، زیرا بررسی مهر زمانی مزیت سرعت عملیات q را از بین می‌برد.

توجه: اگر آرشیوی به صورت قطعیت‌یافته (deterministic) ایجاد شده باشد، مثلاً با استفاده از اصلاح‌کننده D، جایگزینی همیشه اتفاق می‌افتد و اصلاح‌کننده u بی‌اثر خواهد بود.

عدم فعالیت در حالت قطعیت‌یافته (deterministic). این معکوس اصلاح‌کننده D در بالا است: فایل‌های اضافه‌شده و نمایه آرشیو مقادیر واقعی UID، GID، زمان‌بندی و حالت فایل را دریافت خواهند کرد.

این حالت پیش‌فرض است مگر اینکه binutils با --enable-deterministic-archives پیکربندی شده باشد.

این اصلاح‌کننده نسخه پرجزئیات (verbose) یک عملیات را درخواست می‌کند. بسیاری از عملیات با افزودن اصلاح‌کننده v اطلاعات بیشتری مانند نام فایل‌های پردازش‌شده را نمایش می‌دهند.
این اصلاح‌کننده شماره نسخه ar را نمایش می‌دهد.

برنامه ar همچنین از برخی گزینه‌های خط فرمان پشتیبانی می‌کند که نه اصلاح‌کننده هستند و نه کنش، اما رفتار آن را به شیوه‌های خاصی تغییر می‌دهند:

فهرست گزینه‌های خط فرمان پشتیبانی‌شده توسط ar را نمایش می‌دهد و سپس خارج می‌شود.
اطلاعات نسخه ar را نمایش می‌دهد و سپس خارج می‌شود.
ابزار ar گزینه اولیه -X32_64 را برای سازگاری با AIX نادیده می‌گیرد. رفتار حاصل از این گزینه حالت پیش‌فرض برای ar گنو است. ابزار ar از هیچ‌یک از گزینه‌های دیگر -X پشتیبانی نمی‌کند؛ به ویژه از -X32 که گزینه پیش‌فرض برای ar در AIX است پشتیبانی نمی‌کند.
گزینه اختیاری خط فرمان --plugin name باعث می‌شود ar پلاگینی به نام name را بارگذاری کند که پشتیبانی از فرمت‌های فایل بیشتر، از جمله فایل‌های شیء با اطلاعات بهینه‌سازی زمان پیوند (LTO) را اضافه می‌کند.

این گزینه تنها در صورتی در دسترس است که زنجیره ابزار با فعال بودن پشتیبانی از پلاگین ساخته شده باشد.

اگر --plugin ارائه نشود، اما پشتیبانی از پلاگین فعال شده باشد، ar فایل‌های موجود در ${libdir}/bfd-plugins را به ترتیب الفبایی پیمایش کرده و از اولین پلاگینی که ادعای شناسایی شیء مورد نظر را داشته باشد استفاده می‌کند.

لطفاً توجه داشته باشید که این پوشه جستجوی پلاگین همان پوشه مورد استفاده گزینه -plugin در ld نیست. برای اینکه ar بتواند از پلاگین پیونددهنده استفاده کند، باید آن را در پوشه ${libdir}/bfd-plugins کپی کرد. برای کامپایل‌های مبتنی بر GCC پلاگین پیونددهنده liblto_plugin.so.0.0.0 نام دارد. برای کامپایل‌های مبتنی بر Clang به نام LLVMgold.so است. پلاگین GCC همیشه با نسخه‌های قبلی سازگار با گذشته است، بنابراین کپی کردن جدیدترین نسخه کافی است.

گزینه اختیاری خط فرمان --target bfdname مشخص می‌کند که اعضای آرشیو در فرمت کد شیء متفاوتی از فرمت پیش‌فرض سیستم شما هستند.
گزینه --output می‌تواند برای مشخص کردن مسیری به یک پوشه که اعضای آرشیو باید در آن استخراج شوند، استفاده شود. اگر این گزینه مشخص نشود، از پوشه جاری استفاده خواهد شد.

توجه: اگرچه وجود این گزینه حاکی از عملیات استخراج x است، اما این گزینه همچنان باید در خط فرمان گنجانده شود.

گزینه --record-libdeps همانند اصلاح‌کننده l است که فقط به صورت طولانی به کار می‌رود.
تبدیل archive مشخص‌شده به یک آرشیو نازک (thin). اگر از قبل وجود داشته و یک آرشیو معمولی باشد، اعضای موجود باید در همان پوشه‌ای که archive قرار دارد حضور داشته باشند.
@file
خواندن گزینه‌های خط فرمان از file. گزینه‌های خوانده‌شده به جای گزینه اصلی @file درج می‌شوند. اگر file وجود نداشته باشد، یا خوانده نشود، گزینه به عنوان یک متن لفظی در نظر گرفته شده و حذف نمی‌شود.

گزینه‌ها در file با نویسه فاصله از هم جدا می‌شوند. یک نویسه فاصله می‌تواند با احاطه کل گزینه در نقل‌قول تکی یا دوتایی در یک گزینه گنجانده شود. هر نویسه‌ای (از جمله بک‌اسلش) می‌تواند با پیشوند کردن یک بک‌اسلش به نویسه مورد نظر گنجانده شود. خود file ممکن است شامل گزینه‌های بیشتر @file باشد؛ هرگونه گزینه‌ای از این دست به صورت بازگشتی پردازش خواهد شد.

nm(1)، ranlib(1) و مدخل‌های Info برای binutils.

حق نشر © 1991-2026 بنیاد نرم‌افزار آزاد (Free Software Foundation, Inc.)

مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه جدیدتر منتشرشده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متن‌های روی جلد، و بدون متن‌های پشت جلد. نسخه‌ای از این مجوز در بخشی با عنوان «مجوز مستندات آزاد گنو» گنجانده شده است.

2026-08-26 binutils-2.47