LLVM-AR(1) LLVM LLVM-AR(1)

llvm-ar - ابزار بایگانی LLVM

llvm-ar [-]{dmpqrstx}[abcDilLNoOPsSTuUvV] [relpos] [count] archive [files...]

دستور llvm-ar مشابه ابزار رایج یونیکس، ar است. این ابزار چندین فایل، مانند فایل‌های شیء (object) و بیت‌کد (bitcode) مربوط به LLVM را درون یک کتابخانهٔ بایگانی واحد که می‌تواند به یک برنامه پیوند داده شود، بایگانی می‌کند. با این حال، بایگانی می‌تواند حاوی هر نوع فایلی باشد. به‌طور پیش‌فرض، llvm-ar یک جدول نمادها ایجاد می‌کند که پیونددهی را سریع‌تر می‌سازد، چرا که تنها باید به جدول نمادها مراجعه شود، نه تک‌تک اعضای فایل‌های درون بایگانی.

دستور llvm-ar می‌تواند برای خواندن فایل‌های بایگانی در قالب‌های SVR4، GNU، BSD، Big Archive و Darwin، و نوشتن فایل‌های بایگانی در سبک‌های GNU، BSD، Big Archive و Darwin به کار رود. اگر یک بایگانی با قالب SVR4 به همراه عملیات‌های r (جایگزینی)، d (حذف)، m (انتقال) یا q (به‌روزرسانی سریع) استفاده شود، بایگانی در قالبی که توسط --format مشخص شده است بازسازی خواهد شد.

موارد تفاوت llvm-ar با پیاده‌سازی‌های پیشین ar به شرح زیر است:

گزینهٔ زیر پشتیبانی نمی‌شود

[f] - کوتاه کردن نام فایل‌های درج‌شده

گزینه‌های زیر برای سازگاری نادیده گرفته می‌شوند

--plugin=<string> - بارگذاری یک افزونه که پشتیبانی از دیگر قالب‌های فایل را اضافه می‌کند

[l] - در ar نادیده گرفته می‌شود

جدول نمادها

از آنجا که llvm-ar از فایل‌های بیت‌کد پشتیبانی می‌کند، جدول نمادی که ایجاد می‌نماید شامل هر دو دسته نمادهای بومی (native) و بیت‌کد است.

بایگانی‌های قطعیت‌پذیر

به‌طور پیش‌فرض، llvm-ar همواره از مقدار صفر برای برچسب‌های زمانی و UIDs/GIDs استفاده می‌کند تا بایگانی‌ها را در یک حالت قطعیت‌پذیر (deterministic) بنویسد. این رفتار معادل فعال بودن اصلاح‌گر D به‌طور پیش‌فرض است. اگر مایل به حفظ سازگاری با سایر پیاده‌سازی‌های ar هستید، می‌توانید اصلاح‌گر U را جهت نوشتن برچسب‌های زمانی و UIDs/GIDs واقعی ارسال کنید.

مسیرهای ویندوز

در ویندوز، llvm-ar با نام فایل‌های بایگانی‌شده با همان میزان حساسیت به بزرگی و کوچکی حروف همانند سیستم‌عامل رفتار می‌کند. در دستگاه‌های غیرویندوزی، llvm-ar بزرگی و کوچکی نویسه‌ها را در نظر نمی‌گیرد.

عملیات‌های llvm-ar با سایر پیاده‌سازی‌های ar سازگار هستند. با این حال، چند تغییردهنده (L) وجود دارند که در دیگر پیاده‌سازی‌های ar یافت نمی‌شوند. گزینه‌های llvm-ar یک عملیات اصلی پایه را برای اجرا روی آرشیو، انواع تغییردهنده‌ها برای آن عملیات، نام فایل آرشیو و فهرستی اختیاری از نام‌های فایل را مشخص می‌کنند. اگر گزینهٔ files مشخص نشود، بسته به نوع عملیات عموماً به معنای «هیچ‌کدام» ("none") یا «همهٔ» ("all") اعضا است. گزینه‌ها، عملیات‌ها و تغییردهنده‌ها در بخش‌های زیر توضیح داده شده‌اند.

حداقل مجموعهٔ گزینه‌ها، دست‌کم یک عملگر و نام آرشیو است.

حذف فایل‌ها از archive. تغییردهنده‌های N و T برای این عملیات اعمال می‌شوند. گزینه‌های files مشخص می‌کنند که کدام اعضا باید از آرشیو حذف شوند. اگر فایل مشخص‌شده‌ای در آرشیو وجود نداشته باشد، خطا محسوب نمی‌شود. اگر هیچ files مشخص نشود، آرشیو تغییر نمی‌کند.
انتقال فایل‌ها از یک مکان در archive به مکانی دیگر. تغییردهنده‌های a، b و i برای این عملیات اعمال می‌شوند. تمام files به مکانی که توسط تغییردهنده‌ها مشخص شده منتقل خواهند شد. اگر هیچ تغییردهنده‌ای استفاده نشود، فایل‌ها به انتهای آرشیو منتقل می‌شوند. اگر هیچ files مشخص نشود، آرشیو تغییر نمی‌کند.
چاپ files در جریان خروجی استاندارد. اگر هیچ files مشخص نشود، کل archive چاپ می‌شود. با تغییردهندهٔ v، llvm-ar همچنین نام فایلی را که در خروجی نوشته می‌شود چاپ می‌کند. چاپ فایل‌های باینری توصیه نمی‌شود زیرا ممکن است تنظیمات ترمینال شما را مختل کند. عملیات p هرگز آرشیو را تغییر نمی‌دهد.
الحاق سریع فایل‌ها به انتهای archive بدون حذف موارد تکراری. اگر هیچ files مشخص نشود، آرشیو تغییر نمی‌کند. رفتار هنگام الحاق یک آرشیو به آرشیوی دیگر به این بستگی دارد که آیا تغییردهنده‌های L و T استفاده شده‌اند یا خیر:
  • الحاق یک آرشیو معمولی به یک آرشیو معمولی، فایل آرشیو را اضافه خواهد کرد. اگر تغییردهندهٔ L مشخص شده باشد، در عوض اعضای آن الحاق خواهند شد.
  • الحاق یک آرشیو معمولی به یک آرشیو thin، به تغییردهندهٔ T نیاز دارد و فایل آرشیو را اضافه خواهد کرد. تغییردهندهٔ L پشتیبانی نمی‌شود.
  • الحاق یک آرشیو thin به یک آرشیو معمولی، فایل آرشیو را اضافه خواهد کرد. اگر تغییردهندهٔ L مشخص شده باشد، در عوض اعضای آن الحاق خواهند شد.
  • الحاق یک آرشیو thin به یک آرشیو thin همیشه اعضای آن را به‌سرعت اضافه خواهد کرد.
جایگزینی files موجود یا درج آن‌ها در انتهای archive در صورتی که وجود نداشته باشند. تغییردهنده‌های a، b، T و u برای این عملیات اعمال می‌شوند. اگر هیچ files مشخص نشود، آرشیو تغییر نمی‌کند.

t[v] .. option:: t [vO]

چاپ فهرست محتویات. بدون هیچ تغییردهنده‌ای، این عملیات فقط نام اعضا را در جریان خروجی استاندارد چاپ می‌کند. با تغییردهندهٔ v، llvm-ar نوع فایل (B=bitcode،‏ S=symbol table، خالی=فایل معمولی)، حالت مجوزها، مالک و گروه (که هنگام استخراج files نادیده گرفته می‌شوند و هنگام افزودن روی مقادیر جایگزین تنظیم می‌شوند)، اندازه و تاریخ را نیز چاپ می‌کند. با تغییردهندهٔ O، آفست‌های اعضا نمایش داده می‌شوند. اگر هر files مشخص شود، فهرست‌گیری فقط برای آن فایل‌ها خواهد بود. اگر هیچ files مشخص نشود، فهرست محتویات کل آرشیو چاپ می‌شود.
مترادفی برای گزینهٔ --version.
استخراج اعضای archive و بازگرداندن آن‌ها به صورت فایل. تغییردهندهٔ o برای این عملیات اعمال می‌شود. این عملیات files مشخص‌شده را از آرشیو بازیابی کرده و آن‌ها را دوباره در سیستم‌فایل سیستم‌عامل می‌نویسد. اگر هیچ files مشخص نشود، کل آرشیو استخراج می‌شود.

اصلاح‌کننده‌های زیر مختص به عملیات‌های خاصی هستند. برای تشخیص اینکه کدام اصلاح‌کننده‌ها برای کدام عملیات‌ها قابل اعمال هستند، بخش عملیات‌ها را ببینید.

هنگام درج یا جابه‌جایی فایل‌های عضو، این گزینه مقصد فایل‌های جدید را پس از عضو relpos تعیین می‌کند. اگر relpos یافت نشود، فایل‌ها در انتهای archive قرار می‌گیرند. relpos بدون یکی از گزینه‌های a، b یا i قابل استفاده نیست.
هنگام درج یا جابه‌جایی فایل‌های عضو، این گزینه مقصد فایل‌های جدید را پیش از عضو relpos تعیین می‌کند. اگر relpos یافت نشود، فایل‌ها در انتهای archive قرار می‌گیرند. relpos بدون یکی از گزینه‌های a، b یا i قابل استفاده نیست. این اصلاح‌کننده هم‌ارز با اصلاح‌کننده i است.
مترادفی برای گزینه b.
هنگام افزودن سریع یک archive، به‌جای خود آن، اعضایش را به‌سرعت اضافه می‌کند. این ویژگی مختص llvm-ar است و در gnu-ar یافت نمی‌شود.
هنگام استخراج یا حذف عضوی که نام یکسانی با عضوی دیگر دارد، پارامتر count به شما امکان می‌دهد یک عدد صحیح مثبت را برای انتخاب نمونه موردنظر با آن نام مشخص کنید، به‌طوری که "1" نشان‌دهنده اولین نمونه است. اگر N مشخص نشود، اولین عضو با آن نام انتخاب خواهد شد. اگر count ارائه نشود، عملیات ناموفق خواهد بود.*count* نمی‌تواند
هنگام استخراج فایل‌ها، از زمان‌های ویرایش هر یک از files به همان صورت که در archive وجود دارند استفاده می‌کند. به‌طور پیش‌فرض، files استخراج‌شده از آرشیو زمان استخراج را به خود می‌گیرند.
نمایش آفست‌های اعضا در داخل آرشیو.
نام مستعار برای --thin. در بسیاری از پیاده‌سازی‌های ar، گزینه T مطابق با مشخصات رابط سامانه X/Open معنای متفاوتی دارد.
هنگام چاپ files یا فهرست محتویات archive، این اصلاح‌کننده به llvm-ar دستور می‌دهد اطلاعات بیشتری را در خروجی بگنجاند.

اصلاح‌کننده‌های زیر می‌توانند برای هر عملیاتی اعمال شوند.

برای عملیات‌های r (جایگزینی) و q (به‌روزرسانی سریع)، در صورتی که آرشیو وجود نداشته باشد، llvm-ar همیشه آن را ایجاد خواهد کرد. معمولاً llvm-ar یک پیام هشدار مبنی بر در حال ایجاد بودن archive چاپ می‌کند. استفاده از این اصلاح‌کننده آن هشدار را غیرفعال می‌کند.
استفاده از صفر برای برچسب‌های زمانی و UIDها/GIDها. این گزینه به‌طور پیش‌فرض فعال است.
هنگام تطبیق نام اعضا، به‌جای صرفاً نام فایل، از مسیرهای کامل استفاده می‌کند. این گزینه می‌تواند هنگام کار با یک archive تولیدشده توسط آرشیوسازهای دیگر مفید باشد، زیرا برخی از آن‌ها مسیرها را به‌عنوان نام عضو مجاز می‌دانند. این رفتار پیش‌فرض برای آرشیوهای thin است.
این اصلاح‌کننده درخواست می‌کند که یک نمایه آرشیو (یا جدول نمادها) به archive اضافه شود، درست مانند استفاده از ranlib. جدول نمادها شامل تمامی توابع قابل‌مشاهده از بیرون و متغیرهای سراسری تعریف‌شده توسط تمامی فایل‌های bitcode در آرشیو خواهد بود. به‌طور پیش‌فرض llvm-ar جدول نمادها را در آرشیوها تولید می‌کند. این گزینه می‌تواند به‌عنوان یک عملیات نیز مورد استفاده قرار گیرد.
این اصلاح‌کننده برعکس اصلاح‌کننده s است. این گزینه به llvm-ar دستور می‌دهد که جدول نمادها را نسازد. اگر هر دو گزینه s و S استفاده شوند، آخرین اصلاح‌کننده‌ای که در میان گزینه‌ها آمده باشد اولویت خواهد داشت.
فقط اعضای archive را با files دارای برچسب‌های زمانی جدیدتر به‌روزرسانی می‌کند.
استفاده از برچسب‌های زمانی و UIDها/GIDهای واقعی.
این گزینه امکان انتخاب <type> از میان default، gnu، darwin، bsd یا coff را فراهم می‌کند. هنگام ساخت یک archive با <type> پیش‌فرض، :program:llvm-ar تلاش می‌کند آن را از روی فایل‌های ورودی تشخیص دهد و در صورت ناتوانی، به هدف پیش‌فرض زنجیره‌ابزار بازگردد.
چاپ خلاصه‌ای از گزینه‌های خط فرمان و معانی آن‌ها.
این گزینه امکان خواندن اسکریپت‌های MRI را از طریق جریان ورودی استاندارد فراهم می‌کند. هیچ گزینهٔ دیگری با این گزینه سازگار نیست.
مشخص کردن دایرکتوری‌ای که اعضای آرشیو باید در آن استخراج شوند. به‌طور پیش‌فرض از دایرکتوری کاری فعلی استفاده می‌شود.
این گزینه شیوهٔ نقل‌قول ``<type>`` را برای فایل‌های پاسخ مشخص می‌کند، چه
``posix`` یا ``windows``. در ویندوز مقدار پیش‌فرض ``windows`` است، در غیر این صورت
پیش‌فرض ``posix`` است.
هنگام ایجاد یا ویرایش یک آرشیو، این گزینه مشخص می‌کند که archive به‌صورت thin خواهد بود. به‌طور پیش‌فرض، آرشیوها به‌صورت thin ساخته نمی‌شوند و هنگام ویرایش یک آرشیو thin، به یک آرشیو معمولی تبدیل خواهد شد.
نمایش نسخهٔ فایل اجرایی llvm-ar.
نوع فایل شیء را که llvm-ar شناسایی می‌کند، مشخص می‌سازد. mode باید یکی از موارد زیر باشد:
32
تنها فایل‌های شیء 32-بیتی را پردازش می‌کند.
64
تنها فایل‌های شیء 64-بیتی را پردازش می‌کند.
32_64
هر دو نوع فایل‌های شیء 32-بیتی و 64-بیتی را پردازش می‌کند.
تمام فایل‌های شیء را پردازش می‌کند.

حالت پیش‌فرض، پردازش فایل‌های شیء 32-بیتی است (اشیاء 64-بیتی نادیده گرفته می‌شوند). حالت را می‌توان با متغیر محیطی OBJECT_MODE نیز تنظیم کرد. برای نمونه، OBJECT_MODE=64 باعث می‌شود ar هر شیء 64-بیتی را پردازش کرده و اشیاء 32-بیتی را نادیده بگیرد. پرچم -X متغیر OBJECT_MODE را لغو می‌کند (بر آن اولویت دارد).

@<FILE>
خواندن گزینه‌ها و دستورات خط فرمان از فایل پاسخ <FILE>.

ابزار llvm-ar زیرمجموعه‌ای از رابط اسکریپت‌نویسی MRI را درک می‌کند که معمولاً توسط بایگان‌های پیرو سنت ar پشتیبانی می‌شود. یک اسکریپت MRI شامل دنباله‌ای از دستورها است که باید توسط بایگان اجرا شوند. گزینه -M امکان ارسال یک اسکریپت MRI را از طریق جریان ورودی استاندارد به llvm-ar فراهم می‌کند.

توجه داشته باشید که llvm-ar دارای محدودیت‌های شناخته‌شده‌ای در رابطه با استفاده از اسکریپت‌های MRI است:

  • هر اسکریپت فقط می‌تواند یک آرشیو ایجاد کند.
  • آرشیوهای موجود را نمی‌توان تغییر داد.

هر دستور با نام دستور آغاز می‌شود و باید در سطری جداگانه قرار گیرد. برخی دستورها دارای آرگومان‌هایی هستند که باید با فاصله خالی (whitespace) از نام جدا شوند. یک اسکریپت MRI باید با یک دستور CREATE یا CREATETHIN شروع شود و به‌طور معمول با دستور SAVE خاتمه می‌یابد. هر متنی پس از '*' یا ';' به عنوان کامنت در نظر گرفته می‌شود.

آغاز ایجاد یک آرشیو معمولی با نام مشخص‌شده. دستورهای بعدی بر روی این archive اعمال می‌شوند.
آغاز ایجاد یک آرشیو thin با نام مشخص‌شده. دستورهای بعدی بر روی این archive اعمال می‌شوند.
افزودن محتویات archive به انتهای آرشیو کنونی.
افزودن <file> به انتهای آرشیو کنونی.
حذف عضوی از آرشیو کنونی که نام فایل آن، بدون در نظر گرفتن مؤلفه‌های دایرکتوری، با <file> مطابقت دارد.
نوشتن آرشیو کنونی در مسیر مشخص‌شده در دستور CREATE/CREATETHIN قبلی.
پایان دادن به اسکریپت MRI (اختیاری).

اگر llvm-ar با موفقیت انجام شود، با مقدار 0 خارج می‌شود. در غیر این صورت، در صورت وقوع خطا، با مقداری غیرصفر خارج خواهد شد.

توسط تیم LLVM نگهداری می‌شود (https://llvm.org).

2003-2026, LLVM Project

2026-07-15 22