erlc(1) Erlang Module Definition erlc(1)

erlc - کامپایلر

برنامهٔ erlc روشی یکپارچه برای اجرای تمامی کامپایلرها در سیستم Erlang فراهم می‌کند. بسته به پسوند هر فایل ورودی، erlc کامپایلر مناسب را فراخوانی می‌کند. صرف‌نظر از این‌که کدام کامپایلر استفاده می‌شود، پرچم‌های یکسانی برای ارائهٔ پارامترها، مانند مسیرهای include و دایرکتوری خروجی، به کار می‌روند.

دایرکتوری کاری فعلی، "."، هنگام اجرای کامپایلر در مسیر کد (code path) گنجانده نمی‌شود. این امر برای جلوگیری از بارگذاری فایل‌های Beam از دایرکتوری کاری فعلی است که ممکن است به‌طور بالقوه با کامپایلر یا سیستم Erlang/OTP مورد استفادهٔ کامپایلر تداخل داشته باشند.

یک یا چند فایل را کامپایل می‌کند. فایل‌ها باید دارای پسوند باشند، برای نمونه .erl برای کدهای منبع Erlang، یا .yrl برای کدهای منبع Yecc. برنامهٔ erlc از پسوند فایل برای فراخوانی کامپایلر صحیح استفاده می‌کند.

پرچم‌های زیر پشتیبانی می‌شوند:

-I <Directory>

به کامپایلر دستور می‌دهد فایل‌های include را در Directory جستجو کند. هنگام برخورد با یک دستورالعمل -include یا -include_lib، کامپایلر فایل‌های سرآیند (header) را در دایرکتوری‌های زیر جستجو می‌کند:
•"."، دایرکتوری کاری فعلی سرور فایل
•نام پایه (base name) فایل کامپایل‌شده
•دایرکتوری‌های مشخص‌شده با گزینهٔ -I؛ دایرکتوری‌ای که در آخر مشخص شده باشد، اول از همه جستجو می‌شود

-o <Directory>

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

-D<Name>

یک ماکرو تعریف می‌کند.

-D<Name>=<Value>

ماکرویی با مقدار مشخص‌شده تعریف می‌کند. مقدار می‌تواند هر عبارت (term) در Erlang باشد. بسته به پلتفرم، در صورتی که پوسته نویسه‌های خاصی را تفسیر کند ممکن است نیاز به قرار دادن مقدار در نقل‌قول باشد. در Unix، عبارت‌های حاوی تاپل‌ها و لیست‌ها باید درون نقل‌قول قرار گیرند. عبارت‌های حاوی فاصله (space) در تمامی پلتفرم‌ها باید درون نقل‌قول قرار گیرند.

-Werror

همهٔ هشدارها را به خطا تبدیل می‌کند.

-W<Number>

سطح هشدار را به Number تنظیم می‌کند. پیش‌فرض 1 است. برای غیرفعال کردن هشدارها، از -W0 استفاده کنید.

-W

مشابه -W1. مقدار پیش‌فرض.

-v

خروجی پرگو (verbose) را فعال می‌کند.

-b <Output_type>

نوع فایل خروجی را مشخص می‌کند. Output_type مشابه پسوند فایل خروجی است، اما بدون نقطه. این گزینه توسط کامپایلرهایی که تنها یک قالب خروجی دارند نادیده گرفته می‌شود.

-no-server

از سرور کامپایل (compile server) استفاده نمی‌کند.

-server

از سرور کامپایل (compile server) استفاده می‌کند.

-enable-feature <Feature>

قابلیت feature را هنگام کامپایل فعال می‌کند. از قابلیت ویژهٔ all می‌توان برای فعال‌سازی تمامی قابلیت‌ها استفاده کرد.

-disable-feature <feature>

قابلیت feature را هنگام کامپایل غیرفعال می‌کند. از قابلیت ویژهٔ all می‌توان برای غیرفعال‌سازی تمامی قابلیت‌های غیردائمی استفاده کرد.

-list-features

توضیحات کوتاهی از قابلیت‌های پیکربندی‌پذیر فعلی را فهرست می‌کند. قابلیت‌های غیرقابل‌پیکربندی (آن‌هایی که وضعیت rejected یا permanent دارند) نمایش داده نخواهند شد.

-describe-feature <feature>

توضیحات طولانی و تاریخچهٔ قابلیت feature را نمایش می‌دهد.

-M

یک قاعدهٔ Makefile برای ردیابی وابستگی‌های سرآیند تولید می‌کند. این قاعده به stdout فرستاده می‌شود. هیچ فایل شیئی (object file) تولید نمی‌شود.

-MMD

وابستگی‌ها را به عنوان یک اثر جانبی تولید می‌کند. فایل شیء مانند حالت عادی تولید خواهد شد. این گزینه بر گزینهٔ -M تقدم دارد.

-MF <Makefile>

مانند گزینهٔ -M عمل می‌کند، با این تفاوت که Makefile درون Makefile نوشته می‌شود. هیچ فایل شیئی تولید نمی‌شود.

-MD

مشابه -M -MF <File>.Pbeam.

-MT <Target>

در ترکیب با گزینهٔ -M یا -MF، نام قاعدهٔ صادرشده را به Target تغییر می‌دهد.

-MQ <Target>

مانند گزینهٔ -MT عمل می‌کند، با این تفاوت که نویسه‌های ویژهٔ make/1 نقل‌قول (quote) می‌شوند.

-MP

در ترکیب با گزینهٔ -M یا -MF، یک هدف ساختگی (phony target) برای هر وابستگی می‌افزاید.

-MG

در ترکیب با گزینهٔ -M یا -MF، سرآیندهای ناموجود را به عنوان فایل‌های تولیدشده در نظر می‌گیرد و آن‌ها را به وابستگی‌ها اضافه می‌کند.

--

نشان می‌دهد که هیچ گزینهٔ دیگری در ادامه نخواهد آمد. سایر آرگومان‌ها به عنوان نام فایل در نظر گرفته می‌شوند، حتی اگر با خط تیره آغاز شوند.

+<Term>

پرچمی که به جای خط تیره با علامت مثبت ( +) آغاز شود به یک عبارت (term) ارلنگ تبدیل شده و بدون تغییر به کامپایلر ارسال می‌شود. برای نمونه، گزینهٔ export_all برای کامپایلر Erlang را می‌توان به صورت زیر مشخص کرد:.IP
erlc +export_all file.erl

بسته به پلتفرم، در صورتی که خود پوسته کاراکترهای خاصی را تفسیر کند، ممکن است لازم باشد مقدار داخل کوتیشن قرار گیرد. در Unix، ترم‌های حاوی تاپل‌ها و لیست‌ها باید درون کوتیشن قرار گیرند. ترم‌های حاوی فاصله باید در تمام پلتفرم‌ها درون کوتیشن قرار گیرند.

پرچم‌های زیر در شرایط خاص، مانند بازسازی سیستم OTP مفید هستند:

-pa <Directory>

Directory را به ابتدای مسیر کد در شبیه‌ساز فراخوانی‌شده‌ی Erlang اضافه می‌کند. این گزینه می‌تواند برای فراخوانی کامپایلری غیر از کامپایلر پیش‌فرض استفاده شود.

-pz <Directory>

Directory را به مسیر کد در شبیه‌ساز فراخوانی‌شده‌ی Erlang اضافه می‌کند.

کامپایلرهای زیر پشتیبانی می‌شوند:

.erl

کد منبع Erlang. یک فایل .beam تولید می‌کند.

گزینه‌های -P، -E و -S معادل +'P'، +'E' و +'S' هستند، با این تفاوت که نیازی به قرار دادن کوتیشن تکی جهت محافظت از آن‌ها در برابر پوسته نیست.

گزینه‌های پشتیبانی‌شده: -I، -o، -D، -v، -W، -b.

.S

کد منبع اسمبلی Erlang. یک فایل .beam تولید می‌کند.

گزینه‌های پشتیبانی‌شده: مشابه .erl.

.core

کد منبع Core Erlang. یک فایل .beam تولید می‌کند.

گزینه‌های پشتیبانی‌شده: مشابه .erl.

.abstr

قالب انتزاعی Erlang همان‌طور که توسط to_abstr تولید می‌شود. یک فایل .beam تولید می‌کند.

گزینه‌های پشتیبانی‌شده: مشابه .erl.

.yrl

کد منبع Yecc. یک فایل .erl تولید می‌کند.

از گزینه -I به همراه نام یک فایل برای استفاده از آن فایل به‌عنوان فایل prologue سفارشی استفاده کنید (گزینه includefile).

گزینه‌های پشتیبانی‌شده: -o، -v، -I، -W.

.mib

MIB برای SNMP. یک فایل .bin تولید می‌کند.

گزینه‌های پشتیبانی‌شده: -I، -o، -W.

.bin

یک MIB کامپایل‌شده برای SNMP. یک فایل .hrl تولید می‌کند.

گزینه‌های پشتیبانی‌شده: -o، -v.

.rel

فایل اسکریپت. یک فایل boot تولید می‌کند.

از گزینه -I برای مشخص کردن دایرکتوری‌هایی که باید جهت یافتن فایل‌های برنامه جستجو شوند استفاده کنید (معادل path در فهرست گزینه‌های systools:make_script/2).

گزینه پشتیبانی‌شده: -o.

.asn1

فایل ASN1. فایل‌های .erl، .hrl و .asn1db را از یک فایل .asn1 ایجاد می‌کند. همچنین فایل .erl را با استفاده از کامپایلر Erlang کامپایل می‌کند، مگر اینکه گزینه +noobj مشخص شده باشد.

گزینه‌های پشتیبانی‌شده: -I، -o، -b، -W.

.idl

فایل IC. کامپایلر IDL را اجرا می‌کند.

گزینه‌های پشتیبانی‌شده: -I، -o.

سرور کامپایل می‌تواند با اجتناب از راه‌اندازی یک سیستم Erlang برای کامپایل هر فایل، به‌طور بالقوه به ساخت پروژه‌های چندفایلی سرعت بخشد. این که آیا سرعت ساخت افزایش می‌یابد یا خیر، به ماهیت پروژه و ماشین ساخت بستگی دارد.

به‌طور پیش‌فرض، از سرور کامپایل استفاده نمی‌شود. می‌توان آن را با دادن گزینهٔ -server به erlc یا با تنظیم متغیر محیطی ERLC_USE_SERVER روی yes یا true فعال کرد.

هنگامی که سرور کامپایل فعال باشد، چنانچه سرور راه‌اندازی شده باشد erlc به‌طور خودکار از آن استفاده می‌کند و اگر هنوز راه‌اندازی نشده باشد، آن را راه‌اندازی خواهد کرد. سرور پس از این که برای چند ثانیه بی‌کار بماند، به کار خود پایان می‌دهد.

erlc و سرور کامپایل با استفاده از توزیع Erlang ارتباط برقرار می‌کنند. سرور کامپایل به عنوان یک گره مخفی (hidden node)، با نامی که شامل کاربر جاری است راه‌اندازی می‌شود. بنابراین، هر کاربر روی رایانه سرور کامپایل اختصاصی خود را دارد.

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

•erlc بخواهد از نسخهٔ متفاوتی از Erlang نسبت به نسخهٔ مورد استفادهٔ سرور کامپایل استفاده کند.
•erlc بخواهد از گزینه‌های متفاوتی برای erl نسبت به گزینه‌هایی که سرور کامپایل با آن‌ها راه‌اندازی شده بود استفاده نماید. (تغییر مسیر کد با استفاده از گزینهٔ -pa می‌تواند منجر به بارگذاری تبدیل‌های تجزیه (parse transforms) متفاوتی شود. برای حفظ ایمنی، سرور کامپایل با تغییر هر گزینه‌ای از erl مجدداً راه‌اندازی می‌شود.)
•اگر دایرکتوری کاری جاری برای erlc با دایرکتوری کاری فعال در هنگام راه‌اندازی سرور کامپایل متفاوت باشد، و چنانچه سرور کامپایل کارهای فعالی داشته باشد، به محض اتمام آن کارها مجدداً راه‌اندازی خواهد شد. (سیستم‌های ساختی که فایل‌ها را به‌صورت تصادفی در میان چندین دایرکتوری به‌طور موازی می‌سازند، احتمالاً بهره‌ای از سرور کامپایل نخواهند برد.)

ERLC_EMULATOR

دستور راه‌اندازی شبیه‌ساز، که باید صرفاً مسیر شبیه‌ساز بدون هیچ‌گونه پارامتری باشد. پیش‌فرض آن erl در همان دایرکتوری برنامهٔ erlc است، یا چنانچه موجود نباشد، erl در هر یک از دایرکتوری‌های مشخص‌شده در متغیر محیطی PATH خواهد بود.

ERLC_USE_SERVER

مقادیر مجاز عبارتند از yes یا true برای استفاده از سرور کامپایل، و no یا false برای عدم استفاده از آن. اگر مقادیر دیگری داده شود، erlc یک پیام هشدار چاپ کرده و ادامه می‌دهد.

ERLC_SERVER_ID

به erlc اعلام می‌کند که سرور کامپایل را با نام داده‌شده شناسایی کند؛ این امر به یک کاربر اجازه می‌دهد چندین ساخت نامرتبط را بدون تأثیرگذاری بر یکدیگر به‌صورت موازی اجرا کند که برای ماشین‌های ساخت اشتراکی و موارد مشابه مفید است. این نام باید الفبایی-عددی (alphanumeric) باشد و به‌طور پیش‌فرض خالی است.

erl(1), compile, yecc, snmp

erts 17.0.6 Ericsson AB