| CRYSTAL-BUILD(1) | Crystal Compiler Command Line Reference Guide | CRYSTAL-BUILD(1) |
نام (NAME)
crystal-build - کامپایل کردن یک برنامه Crystal
خلاصه دستور (SYNOPSIS)
crystal build [options] [programfile] [--] [arguments]
گزینهها (OPTIONS)
--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 |