CRYSTAL-BUILD(1) Crystal Compiler Command Line Reference Guide CRYSTAL-BUILD(1)

crystal-build - کامپایل کردن یک برنامه Crystal

crystal build [options] [programfile] [--] [arguments]

--cross-compile

تولید یک فایل شیء (object file) برای کامپایل متقاطع (cross compilation) و چاپ دستور ساخت فایل اجرایی. فایل شیء باید به سیستم مقصد کپی شده و دستور چاپ‌شده در آنجا اجرا شود. این پرچم عمدتاً برای پورت کردن کامپایلر به پلتفرم‌های جدید تعبیه شده است؛ در صورت امکان، کامپایلر را مستقیماً روی پلتفرم مقصد اجرا کنید.

-d, --debug

تولید خروجی حاوی نمادهای اشکال‌زدایی (debug symbols). این نمادها هنگام اشکال‌زدایی برنامه ساخته‌شده با ابزارهایی مانند lldb، gdb، valgrind و غیره خوانده می‌شوند و نگاشتی به کد منبع اصلی برای این ابزارها فراهم می‌کنند.

--no-debug

تولید خروجی بدون هیچ‌گونه نماد اشکال‌زدایی.

-D FLAG, --define FLAG

تعریف یک پرچم زمان کامپایل. این گزینه برای تعریف شرطی نوع‌ها، متدها یا دستورها بر اساس پرچم‌های در دسترس در زمان کامپایل کاربرد دارد. پرچم‌های پیش‌فرض از سه‌گانه مقصد (target triple) ارائه‌شده با --target-triple یا در صورت عدم تعیین، از پیش‌فرض میزبان برگرفته می‌شوند.

--emit [asm|llvm-bc|llvm-ir|obj]

فهرستی جداشده با کاما از انواع خروجی برای تولید توسط کامپایلر. می‌توانید از این گزینه برای مشاهده LLVM IR، بایت‌کد LLVM، فایل اسمبلی و فایل‌های شیءِ (object) تولیدشده استفاده کنید.

--x86-asm-syntax [att|intel]

انتخاب گویش اسمبلی برای --emit=asm. مقدار پیش‌فرض att است که بیانگر ساختار دستوری AT&T بوده و توسط ابزارهایی چون GNU Assembler پشتیبانی می‌شود. مقدار intel ساختار دستوری Intel را انتخاب می‌کند که برای ابزارهای Windows ارجحیت دارد.

--frame-pointers [auto|always|non-leaf]

کنترل حفظ اشاره‌گرهای فریم (frame pointers). مقدار پیش‌فرض، --frame-pointers=auto، اشاره‌گرهای فریم را در ساخت‌های debug نگه می‌دارد و تلاش می‌کند آن‌ها را در ساخت‌های release حذف کند (برخی پلتفرم‌ها برای حفظ عملکرد خود نیازمند فعال ماندن آن‌ها هستند). مقدار --frame-pointers=always همیشه آن‌ها را حفظ می‌کند، و مقدار non-leaf حفظ آن‌ها را فقط در توابع غیر برگ (non-leaf) الزامی می‌سازد.

-f text|json, --format text|json

قالب خروجی. پیش‌فرض text است. قالب json می‌تواند برای دریافت خروجی مناسب‌تر جهت تجزیه خودکار (parse) استفاده شود.

--error-trace

نمایش رد کامل خطا (error trace). به‌طور پیش‌فرض غیرفعال است، زیرا رد کامل معمولاً خوانایی پیام‌های خطا را کاهش می‌دهد و ممکن است همیشه اطلاعات مرتبط ارائه نکند.

--ll

تخلیه فایل اسمبلی LLVM در دایرکتوری خروجی.

--link-flags FLAGS

ارسال پرچم‌های اضافی به پیونددهنده (linker). با اینکه می‌توانید این پرچم‌ها را در کد منبع نیز مشخص کنید، این گزینه برای ارسال مستقیم اطلاعات خاص محیط به پیونددهنده، مانند مسیرها یا نام‌های غیراستاندارد کتابخانه‌ها، مفید است. برای اطلاعات بیشتر در خصوص مشخص کردن پرچم‌های پیونددهنده در کد منبع، می‌توانید بخش «C bindings» را در مستندات وبگاه رسمی مطالعه کنید.

--mcpu CPU

مشخص کردن یک پردازنده (CPU) ویژه برای تولید کد. این گزینه پرچم -mcpu را به LLVM ارسال می‌کند و صرفاً برای کامپایل متقاطع کاربرد دارد. برای مشاهده فهرستی از CPUهای در دسترس، هنگام ساخت هر کد منبع Crystal گزینه --mcpu help را ارسال کنید. ارسال --mcpu native نام CPU میزبان را ارسال می‌کند تا کارایی برای میزبان بهینه‌سازی شود.

--mattr CPU

بازنویسی یا کنترل ویژگی‌های خاص مقصد، مانند فعال یا غیرفعال بودن عملیات SIMD. مجموعه ویژگی‌های پیش‌فرض بر اساس CPU فعلی تنظیم می‌شود. این گزینه پرچم -mattr را به LLVM ارسال می‌کند و صرفاً برای کامپایل متقاطع کاربرد دارد. برای مشاهده فهرستی از ویژگی‌های در دسترس، دستور llvm-as < /dev/null | llc -march=xyz -mattr=help را اجرا کنید.

--mcmodel default|kernel|tiny|small|medium|large

مشخص کردن یک مدل کد (code model) خاص برای تولید کد. این گزینه پرچم --code-model را به LLVM ارسال می‌کند.

--no-color

غیرفعال کردن خروجی رنگی.

--no-codegen

تولید کد انجام نشود، فقط فایل تجزیه (parse) شود.

-o FILE, --output FILE

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

--prelude

مشخص کردن پیش‌درآمد (prelude) مورد استفاده. مورد پیش‌فرض، بازیافت حافظه (garbage collector) را مقداردهی اولیه می‌کند. همچنین می‌توانید از --prelude=empty برای استفاده نکردن از هیچ پیش‌درآمدی استفاده کنید. این امر برای بررسی فرایند تولید کد برای یک فایل منبع خاص مفید است.

-O LEVEL

حالت بهینه‌سازی: 0 (پیش‌فرض)، 1، 2، 3. برای جزئیات به OPTIMIZATIONS مراجعه کنید.

--release

کامپایل در حالت نهایی (release). معادل با -O3 --single-module

-s, --stats

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

-p, --progress

چاپ آمار مربوط به پیشرفت ساخت فعلی.

-t, --time

چاپ آمار مربوط به زمان اجرا.

--single-module

تولید یک ماژول LLVM منفرد. به‌طور پیش‌فرض، برای هر نوع (type) در یک برنامه یک ماژول LLVM ایجاد می‌شود. گزینه --release این گزینه را به‌همراه دارد.

--threads NUM

حداکثر تعداد رشته‌ها (threads) برای استفاده در تولید کد. مقدار پیش‌فرض ۸ رشته است.

--target TRIPLE

فعال‌سازی سه‌گانه مقصد (target triple)؛ در نظر گرفته شده برای استفاده در کامپایل متقاطع. برای اطلاعات بیشتر در خصوص سه‌گانه مقصد، مستندات llvm را ببینید.

--verbose

نمایش دستورهای اجراشده توسط سیستم.

--static

ایجاد یک فایل اجرایی پیوندیافته به‌صورت ایستا (statically linked).

--stdin-filename FILENAME

نام فایل منبع برای خواندن از STDIN.
2026-07-23 crystal 1.21.0