RUSTC(1) User Commands RUSTC(1)

rustc - کامپایلر زبان Rust

rustc [OPTIONS] INPUT

این برنامه کامپایلری برای زبان Rust است که در نشانی https://www.rust-lang.org در دسترس است.

نمایش پیام راهنما.
پیکربندی محیط کامپایل.
افزودن یک دایرکتوری به مسیر جستجوی کتابخانه‌ها. مقدار اختیاری KIND می‌تواند یکی از موارد زیر باشد:
تنها وابستگی‌های متعدی (transitive) در اینجا جستجو شوند
تنها دستورالعمل‌های محلی `extern crate` در اینجا جستجو شوند
تنها کتابخانه‌های محلی (native) در اینجا جستجو شوند
تنها فریم‌ورک‌های OSX در اینجا جستجو شوند
همه موارد در اینجا جستجو شوند (پیش‌فرض)
پیوند دادن crate(های) تولیدشده به کتابخانه مشخص‌شده در NAME. مقدار اختیاری KIND می‌تواند یکی از مقادیر static، dylib یا framework باشد. در صورت مشخص نشدن، dylib در نظر گرفته می‌شود.
--crate-type [bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]
فهرستی جداشده با کاما از انواع crateها که کامپایلر باید تولید کند.
--crate-name NAME
مشخص کردن نام crate در حال ساخت.
پیکربندی خروجی‌ای که rustc تولید خواهد کرد. هر خروجی می‌تواند یک مسیر PATH اختیاری و صریح نیز برای آن نوع خروجی خاص داشته باشد. این مسیر بر گزینه -o اولویت دارد.
فهرستی جداشده با کاما از اطلاعات کامپایلر جهت چاپ در stdout.
معادل با -C debuginfo=2.
معادل با -C opt-level=2.
نوشتن خروجی در FILENAME. در صورتی که چندین خروجی --emit مشخص شده باشند که مسیر صریحی ندارند، نادیده گرفته می‌شود.
نوشتن خروجی در DIR با نام فایلی که کامپایلر انتخاب می‌کند. در صورت مشخص شدن -o نادیده گرفته می‌شود. پیش‌فرض، دایرکتوری جاری است.
ارائه توضیحات دقیق پیرامون یک پیام خطا.
ساخت مهار آزمون (test harness).
تاپل هدف (target tuple) که کد برای آن کامپایل می‌شود. این گزینه به طور پیش‌فرض تاپل هدف میزبان است. تاپل هدف قالب کلی <arch><sub>-<vendor>-<sys>-<abi> را دارد که در آن:
<arch>
شامل x86، arm، thumb، mips و غیره.
<sub>
برای مثال در ARM شامل: v5، v6m، v7a، v7m و غیره.
<vendor>
شامل pc، apple، nvidia، ibm و غیره.
<sys>
شامل none، linux، win32، darwin، cuda و غیره.
<abi>
شامل eabi، gnu، android، macho، elf و غیره.
چاپ گزینه‌های 'lint' و تنظیمات پیش‌فرض.
تنظیم هشدارهای lint.
مجاز کردن موارد lint.
رد کردن موارد lint (به عنوان خطا).
قدغن کردن موارد lint (غیرقابل لغو).
تنظیم یک پرچم مرتبط با تولید کد (codegen) به مقدار مشخص‌شده. برای چاپ پرچم‌های موجود از -C help استفاده کنید. بخش CODEGEN OPTIONS را در ادامه ببینید.
چاپ اطلاعات نسخه و خروج.
استفاده از خروجی پرگو (verbose).
بازنگاشت پیشوندهای مسیر مبدا در تمام خروجی‌ها، شامل خطایابی‌های کامپایلر، اطلاعات اشکال‌زدایی، گسترش ماکروها و غیره. پارامتر from=to از راست به چپ بررسی می‌شود، بنابراین from می‌تواند شامل '=' باشد، اما to نمی‌تواند.

این گزینه برای نرمال‌سازی نتایج ساخت مفید است، به عنوان مثال با حذف دایرکتوری جاری از نام مسیرهای ثبت‌شده در فایل‌های شیء (object). جایگزینی صرفاً متنی است و نحو نام مسیر سیستم جاری در نظر گرفته نمی‌شود. برای مثال --remap-path-prefix foo=bar با foo/lib.rs مطابقت دارد اما با ./foo/lib.rs تطابق نخواهد داشت.

مشخص کردن محل یک کتابخانه خارجی Rust. این موارد باید با اعلان‌های extern در کد منبع crate مطابقت داشته باشند.
بازنویسی ریشه سیستم (system root).
تنظیم گزینه‌های ناپایدار (unstable) یا دائماً ناپایدار (perma-unstable). برای چاپ گزینه‌های موجود از -Z help استفاده کنید.
پیکربندی رنگ‌آمیزی خروجی:
رنگی کردن خروجی در صورتی که به یک tty ارسال شود (پیش‌فرض)؛
رنگی کردن همیشگی خروجی؛
عدم رنگ‌آمیزی خروجی در هیچ حالتی.
مسیر ابزار پیونددهنده (linker) برای استفاده هنگام پیوند دادن کتابخانه‌ها، فایل‌های اجرایی، و فایل‌های شیء (objects).
فهرستی از آرگومان‌های اضافی جداشده با فاصله برای ارسال به پیونددهنده هنگام فراخوانی آن.
انجام بهینه‌سازی‌های زمان پیوند (LTO) با LLVM.
پردازندهٔ مقصد را انتخاب می‌کند. اگر مقدار برابر با 'help' باشد، فهرستی از پردازنده‌های در دسترس چاپ می‌شود.
فهرستی از ویژگی‌های جداشده با کاما برای فعال یا غیرفعال کردن در مقصد. علامت '+' در ابتدا یک ویژگی را فعال و علامت '-' آن را غیرفعال می‌کند. ویژگی‌های موجود را می‌توان با دستور llc -mcpu=help پیدا کرد.
فهرستی از گذرهای (passes) اضافی LLVM جداشده با فاصله برای اجرا. مقدار 'list' باعث می‌شود rustc تمام گذرهای شناخته‌شده را چاپ کرده و خارج شود. گذرهای مشخص‌شده به انتهای مدیر گذرهای عادی اضافه می‌شوند.
فهرستی از آرگومان‌های جداشده با فاصله برای ارسال مستقیم به LLVM.
در صورت تعیین، کامپایلر فایل‌های بیشتری (.bc، .o، .no-opt.bc) را که در طول کامپایل تولید می‌شوند در دایرکتوری خروجی ذخیره خواهد کرد.
در صورت تعیین، مقدار rpath برای کتابخانه‌های پویا در خروجی‌های کتابخانهٔ پویا یا فایل اجرایی تنظیم می‌شود.
از مقداردهی اولیه و پیش‌بارگذاری مدیر گذرهای LLVM که روی ماژول اجرا می‌شود، جلوگیری می‌کند.
صرف‌نظر از سطح بهینه‌سازی، اجرای گذر برداری‌سازی حلقه‌های LLVM را غیرفعال می‌کند.
صرف‌نظر از سطح بهینه‌سازی، اجرای گذر برداری‌سازی SLP در LLVM را غیرفعال می‌کند.
به جای دستورالعمل‌های سخت‌افزاری، فراخوانی‌های کتابخانه‌ای ممیز شناور نرم‌افزاری تولید می‌کند.
پیوند پویا را به پیوند ایستا ترجیح می‌دهد.
استفاده از یک اسمبلر خارجی به جای اسمبلر یکپارچهٔ داخلی LLVM را اجباری می‌کند.
استفاده از ناحیهٔ محافظت‌شدهٔ پشته (redzone) را غیرفعال می‌کند.
مدل بازنشانی (relocation) مورد استفاده. (پیش‌فرض: pic)
مدل کد مورد استفاده را انتخاب می‌کند.
متاداده برای درهم‌ریزی نام نمادها (symbol name mangling).
داده‌های اضافی برای درج در نام هر فایل خروجی.
کریت (crate) را به n واحد تقسیم می‌کند تا به صورت موازی بهینه‌سازی شوند.
چاپ ملاحظات و گزارش‌ها برای این گذرهای بهینه‌سازی (جداشده با فاصله، یا "all").
بررسی‌های مربوط به سرریز پشته را غیرفعال می‌کند (یک مخاطرهٔ جدی برای ایمنی حافظه!).
سطح انتشار اطلاعات اشکال‌زدایی:
0
بدون اطلاعات اشکال‌زدایی؛
1
فقط جدول خطوط کد (برای ردگیری پشته و نقاط توقف)؛
2
اطلاعات اشکال‌زدایی کامل همراه با اطلاعات متغیرها و نوع‌ها.
بهینه‌سازی با سطوح ممکن 0–3، s (بهینه‌سازی برای اندازه)، یا z (برای کمترین اندازهٔ ممکن).SH "محیط (ENVIRONMENT)"

برخی از این متغیرها تنها بر برنامه‌های بستر آزمون (ایجادشده از طریق rustc --test) اثر می‌گذارند؛ سایر متغیرها بر تمام برنامه‌هایی که با کتابخانه استاندارد Rust پیوند می‌خورند تأثیرگذارند.

چارچوب آزمونی که Rust ارائه می‌دهد، آزمون‌ها را به‌صورت موازی اجرا می‌کند. این متغیر حداکثر تعداد رشته‌های مورد استفاده برای این منظور را مشخص می‌کند. این تنظیم توسط گزینه --test-threads بازنویسی می‌شود.
اگر روی مقداری غیر از "0" تنظیم شود، مترادفی برای پرچم --nocapture است.
حداقل اندازه پشته (stack) را برای رشته‌های جدید تعیین می‌کند.
اگر روی مقداری غیر از "0" تنظیم شود، در خروجی برنامه‌ای که دچار panic می‌شود یک backtrace تولید می‌کند.

برای ساخت یک فایل اجرایی از یک فایل منبع با تابع main:
$ rustc -o hello hello.rs

برای ساخت یک کتابخانه از یک فایل منبع:
$ rustc --crate-type=lib hello-lib.rs

برای ساخت هر یک با یک فایل crate (.rs):
$ rustc hello.rs

برای ساخت یک فایل اجرایی همراه با اطلاعات اشکال‌زدایی:
$ rustc -g -o hello hello.rs

rustdoc(1)

برای مشاهده و گزارش باگ‌ها به https://github.com/rust-lang/rust/issues مراجعه کنید.

صفحه https://github.com/rust-lang/rust/graphs/contributors را ببینید یا از دستور `git log --all --format='%cN <%cE>' | sort -u` در توزیع منبع rust استفاده کنید.

این اثر دارای مجوز دوگانه تحت شرایط Apache 2.0 و MIT است. فایل COPYRIGHT را در توزیع منبع rust مشاهده کنید.

April 2019 rustc 1.98.1 (48a229cea 2026-09-01)