.TH erlc 1 "erts 17.0.6" "Ericsson AB" "Erlang Module Definition" .SH "نام (NAME)" erlc \- کامپایلر .SH "توضیحات (DESCRIPTION)" .PP برنامهٔ \fIerlc\fR روشی یکپارچه برای اجرای تمامی کامپایلرها در سیستم Erlang فراهم می‌کند. بسته به پسوند هر فایل ورودی، \fIerlc\fR کامپایلر مناسب را فراخوانی می‌کند. صرف‌نظر از این‌که کدام کامپایلر استفاده می‌شود، پرچم‌های یکسانی برای ارائهٔ پارامترها، مانند مسیرهای include و دایرکتوری خروجی، به کار می‌روند. .PP دایرکتوری کاری فعلی، \fI"."\fR، هنگام اجرای کامپایلر در مسیر کد (code path) گنجانده نمی‌شود. این امر برای جلوگیری از بارگذاری فایل‌های Beam از دایرکتوری کاری فعلی است که ممکن است به‌طور بالقوه با کامپایلر یا سیستم Erlang/OTP مورد استفادهٔ کامپایلر تداخل داشته باشند. .SS "erlc flags file1.ext file2.ext..." .PP یک یا چند فایل را کامپایل می‌کند. فایل‌ها باید دارای پسوند باشند، برای نمونه \fI.erl\fR برای کدهای منبع Erlang، یا \fI.yrl\fR برای کدهای منبع Yecc. برنامهٔ \fIerlc\fR از پسوند فایل برای فراخوانی کامپایلر صحیح استفاده می‌کند. .SS "پرچم‌های عموماً کاربردی (Generally Useful Flags)" .PP پرچم‌های زیر پشتیبانی می‌شوند: -I .RS 2 به کامپایلر دستور می‌دهد فایل‌های include را در \fIDirectory\fR جستجو کند. هنگام برخورد با یک دستورالعمل \fI-include\fR یا \fI-include_lib\fR، کامپایلر فایل‌های سرآیند (header) را در دایرکتوری‌های زیر جستجو می‌کند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}.PP \fI"."\fR، دایرکتوری کاری فعلی سرور فایل .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}.PP نام پایه (base name) فایل کامپایل‌شده .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}.PP دایرکتوری‌های مشخص‌شده با گزینهٔ \fI-I\fR؛ دایرکتوری‌ای که در آخر مشخص شده باشد، اول از همه جستجو می‌شود .RE .RE -o .RS 2 دایرکتوری‌ای که کامپایلر باید فایل‌های خروجی را در آن قرار دهد. پیش‌فرض، دایرکتوری کاری فعلی است. .RE -D .RS 2 یک ماکرو تعریف می‌کند. .RE -D= .RS 2 ماکرویی با مقدار مشخص‌شده تعریف می‌کند. مقدار می‌تواند هر عبارت (term) در Erlang باشد. بسته به پلتفرم، در صورتی که پوسته نویسه‌های خاصی را تفسیر کند ممکن است نیاز به قرار دادن مقدار در نقل‌قول باشد. در Unix، عبارت‌های حاوی تاپل‌ها و لیست‌ها باید درون نقل‌قول قرار گیرند. عبارت‌های حاوی فاصله (space) در تمامی پلتفرم‌ها باید درون نقل‌قول قرار گیرند. .RE -Werror .RS 2 همهٔ هشدارها را به خطا تبدیل می‌کند. .RE -W .RS 2 سطح هشدار را به \fINumber\fR تنظیم می‌کند. پیش‌فرض \fI1\fR است. برای غیرفعال کردن هشدارها، از \fI-W0\fR استفاده کنید. .RE -W .RS 2 مشابه \fI-W1\fR. مقدار پیش‌فرض. .RE -v .RS 2 خروجی پرگو (verbose) را فعال می‌کند. .RE -b .RS 2 نوع فایل خروجی را مشخص می‌کند. \fIOutput_type\fR مشابه پسوند فایل خروجی است، اما بدون نقطه. این گزینه توسط کامپایلرهایی که تنها یک قالب خروجی دارند نادیده گرفته می‌شود. .RE -no-server .RS 2 از سرور کامپایل (compile server) استفاده نمی‌کند. .RE -server .RS 2 از سرور کامپایل (compile server) استفاده می‌کند. .RE -enable-feature .RS 2 قابلیت \fIfeature\fR را هنگام کامپایل فعال می‌کند. از قابلیت ویژهٔ \fIall\fR می‌توان برای فعال‌سازی تمامی قابلیت‌ها استفاده کرد. .RE -disable-feature .RS 2 قابلیت \fIfeature\fR را هنگام کامپایل غیرفعال می‌کند. از قابلیت ویژهٔ \fIall\fR می‌توان برای غیرفعال‌سازی تمامی قابلیت‌های غیردائمی استفاده کرد. .RE -list-features .RS 2 توضیحات کوتاهی از قابلیت‌های پیکربندی‌پذیر فعلی را فهرست می‌کند. قابلیت‌های غیرقابل‌پیکربندی (آن‌هایی که وضعیت \fIrejected\fR یا \fIpermanent\fR دارند) نمایش داده نخواهند شد. .RE -describe-feature .RS 2 توضیحات طولانی و تاریخچهٔ قابلیت \fIfeature\fR را نمایش می‌دهد. .RE -M .RS 2 یک قاعدهٔ Makefile برای ردیابی وابستگی‌های سرآیند تولید می‌کند. این قاعده به \fIstdout\fR فرستاده می‌شود. هیچ فایل شیئی (object file) تولید نمی‌شود. .RE -MMD .RS 2 وابستگی‌ها را به عنوان یک اثر جانبی تولید می‌کند. فایل شیء مانند حالت عادی تولید خواهد شد. این گزینه بر گزینهٔ \fI-M\fR تقدم دارد. .RE -MF .RS 2 مانند گزینهٔ \fI-M\fR عمل می‌کند، با این تفاوت که Makefile درون \fIMakefile\fR نوشته می‌شود. هیچ فایل شیئی تولید نمی‌شود. .RE -MD .RS 2 مشابه \fI-M -MF .Pbeam\fR. .RE -MT .RS 2 در ترکیب با گزینهٔ \fI-M\fR یا \fI-MF\fR، نام قاعدهٔ صادرشده را به \fITarget\fR تغییر می‌دهد. .RE -MQ .RS 2 مانند گزینهٔ \fI-MT\fR عمل می‌کند، با این تفاوت که نویسه‌های ویژهٔ \fImake/1\fR نقل‌قول (quote) می‌شوند. .RE -MP .RS 2 در ترکیب با گزینهٔ \fI-M\fR یا \fI-MF\fR، یک هدف ساختگی (phony target) برای هر وابستگی می‌افزاید. .RE -MG .RS 2 در ترکیب با گزینهٔ \fI-M\fR یا \fI-MF\fR، سرآیندهای ناموجود را به عنوان فایل‌های تولیدشده در نظر می‌گیرد و آن‌ها را به وابستگی‌ها اضافه می‌کند. .RE -- .RS 2 نشان می‌دهد که هیچ گزینهٔ دیگری در ادامه نخواهد آمد. سایر آرگومان‌ها به عنوان نام فایل در نظر گرفته می‌شوند، حتی اگر با خط تیره آغاز شوند. .RE + .RS 2 پرچمی که به جای خط تیره با علامت مثبت ( \fI+\fR) آغاز شود به یک عبارت (term) ارلنگ تبدیل شده و بدون تغییر به کامپایلر ارسال می‌شود. برای نمونه، گزینهٔ \fIexport_all\fR برای کامپایلر Erlang را می‌توان به صورت زیر مشخص کرد:.IP .nf erlc +export_all file.erl .fi .PP بسته به پلتفرم، در صورتی که خود پوسته کاراکترهای خاصی را تفسیر کند، ممکن است لازم باشد مقدار داخل کوتیشن قرار گیرد. در Unix، ترم‌های حاوی تاپل‌ها و لیست‌ها باید درون کوتیشن قرار گیرند. ترم‌های حاوی فاصله باید در تمام پلتفرم‌ها درون کوتیشن قرار گیرند. .RE .SS "پرچم‌های ویژه (Special Flags)" .PP پرچم‌های زیر در شرایط خاص، مانند بازسازی سیستم OTP مفید هستند: -pa .RS 2 \fIDirectory\fR را به ابتدای مسیر کد در شبیه‌ساز فراخوانی‌شده‌ی Erlang اضافه می‌کند. این گزینه می‌تواند برای فراخوانی کامپایلری غیر از کامپایلر پیش‌فرض استفاده شود. .RE -pz .RS 2 \fIDirectory\fR را به مسیر کد در شبیه‌ساز فراخوانی‌شده‌ی Erlang اضافه می‌کند. .RE .SS "کامپایلرهای پشتیبانی‌شده (Supported Compilers)" .PP کامپایلرهای زیر پشتیبانی می‌شوند: \&.erl .RS 2 کد منبع Erlang. یک فایل \fI.beam\fR تولید می‌کند. .PP گزینه‌های \fI-P\fR، \fI-E\fR و \fI-S\fR معادل \fI+'P'\fR، \fI+'E'\fR و \fI+'S'\fR هستند، با این تفاوت که نیازی به قرار دادن کوتیشن تکی جهت محافظت از آن‌ها در برابر پوسته نیست. .PP گزینه‌های پشتیبانی‌شده: \fI-I\fR، \fI-o\fR، \fI-D\fR، \fI-v\fR، \fI-W\fR، \fI-b\fR. .RE \&.S .RS 2 کد منبع اسمبلی Erlang. یک فایل \fI.beam\fR تولید می‌کند. .PP گزینه‌های پشتیبانی‌شده: مشابه \fI.erl\fR. .RE \&.core .RS 2 کد منبع Core Erlang. یک فایل \fI.beam\fR تولید می‌کند. .PP گزینه‌های پشتیبانی‌شده: مشابه \fI.erl\fR. .RE \&.abstr .RS 2 قالب انتزاعی Erlang همان‌طور که توسط \fIto_abstr\fR تولید می‌شود. یک فایل \fI.beam\fR تولید می‌کند. .PP گزینه‌های پشتیبانی‌شده: مشابه \fI.erl\fR. .RE \&.yrl .RS 2 کد منبع Yecc. یک فایل \fI.erl\fR تولید می‌کند. .PP از گزینه \fI-I\fR به همراه نام یک فایل برای استفاده از آن فایل به‌عنوان فایل prologue سفارشی استفاده کنید (گزینه \fIincludefile\fR). .PP گزینه‌های پشتیبانی‌شده: \fI-o\fR، \fI-v\fR، \fI-I\fR، \fI-W\fR. .RE \&.mib .RS 2 MIB برای SNMP. یک فایل \fI.bin\fR تولید می‌کند. .PP گزینه‌های پشتیبانی‌شده: \fI-I\fR، \fI-o\fR، \fI-W\fR. .RE \&.bin .RS 2 یک MIB کامپایل‌شده برای SNMP. یک فایل \fI.hrl\fR تولید می‌کند. .PP گزینه‌های پشتیبانی‌شده: \fI-o\fR، \fI-v\fR. .RE \&.rel .RS 2 فایل اسکریپت. یک فایل boot تولید می‌کند. .PP از گزینه \fI-I\fR برای مشخص کردن دایرکتوری‌هایی که باید جهت یافتن فایل‌های برنامه جستجو شوند استفاده کنید (معادل \fIpath\fR در فهرست گزینه‌های \fIsystools:make_script/2\fR). .PP گزینه پشتیبانی‌شده: \fI-o\fR. .RE \&.asn1 .RS 2 فایل ASN1. فایل‌های \fI.erl\fR، \fI.hrl\fR و \fI.asn1db\fR را از یک فایل \fI.asn1\fR ایجاد می‌کند. همچنین فایل \fI.erl\fR را با استفاده از کامپایلر Erlang کامپایل می‌کند، مگر اینکه گزینه \fI+noobj\fR مشخص شده باشد. .PP گزینه‌های پشتیبانی‌شده: \fI-I\fR، \fI-o\fR، \fI-b\fR، \fI-W\fR. .RE \&.idl .RS 2 فایل IC. کامپایلر IDL را اجرا می‌کند. .PP گزینه‌های پشتیبانی‌شده: \fI-I\fR، \fI-o\fR. .RE.SS "سرور کامپایل (Compile Server)" .PP سرور کامپایل می‌تواند با اجتناب از راه‌اندازی یک سیستم Erlang برای کامپایل هر فایل، به‌طور بالقوه به ساخت پروژه‌های چندفایلی سرعت بخشد. این که آیا سرعت ساخت افزایش می‌یابد یا خیر، به ماهیت پروژه و ماشین ساخت بستگی دارد. .PP به‌طور پیش‌فرض، از سرور کامپایل استفاده نمی‌شود. می‌توان آن را با دادن گزینهٔ \fI-server\fR به \fIerlc\fR یا با تنظیم متغیر محیطی \fIERLC_USE_SERVER\fR روی \fIyes\fR یا \fItrue\fR فعال کرد. .PP هنگامی که سرور کامپایل فعال باشد، چنانچه سرور راه‌اندازی شده باشد \fIerlc\fR به‌طور خودکار از آن استفاده می‌کند و اگر هنوز راه‌اندازی نشده باشد، آن را راه‌اندازی خواهد کرد. سرور پس از این که برای چند ثانیه بی‌کار بماند، به کار خود پایان می‌دهد. .PP \fIerlc\fR و سرور کامپایل با استفاده از توزیع Erlang ارتباط برقرار می‌کنند. سرور کامپایل به عنوان یک گره مخفی (hidden node)، با نامی که شامل کاربر جاری است راه‌اندازی می‌شود. بنابراین، هر کاربر روی رایانه سرور کامپایل اختصاصی خود را دارد. .PP استفاده از سرور کامپایل همیشه ساخت را سرعت نمی‌بخشد، زیرا گاهی اوقات برای تضمین صحت عملکرد، سرور کامپایل باید مجدداً راه‌اندازی شود. در ادامه چند نمونه از شرایطی که موجب راه‌اندازی مجدد اجباری می‌شوند آورده شده است: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}.PP \fIerlc\fR بخواهد از نسخهٔ متفاوتی از Erlang نسبت به نسخهٔ مورد استفادهٔ سرور کامپایل استفاده کند. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}.PP \fIerlc\fR بخواهد از گزینه‌های متفاوتی برای \fIerl\fR نسبت به گزینه‌هایی که سرور کامپایل با آن‌ها راه‌اندازی شده بود استفاده نماید. (تغییر مسیر کد با استفاده از گزینهٔ \fI-pa\fR می‌تواند منجر به بارگذاری تبدیل‌های تجزیه (parse transforms) متفاوتی شود. برای حفظ ایمنی، سرور کامپایل با تغییر هر گزینه‌ای از \fIerl\fR مجدداً راه‌اندازی می‌شود.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}.PP اگر دایرکتوری کاری جاری برای \fIerlc\fR با دایرکتوری کاری فعال در هنگام راه‌اندازی سرور کامپایل متفاوت باشد، \fBو\fR چنانچه سرور کامپایل کارهای فعالی داشته باشد، به محض اتمام آن کارها مجدداً راه‌اندازی خواهد شد. (سیستم‌های ساختی که فایل‌ها را به‌صورت تصادفی در میان چندین دایرکتوری به‌طور موازی می‌سازند، احتمالاً بهره‌ای از سرور کامپایل نخواهند برد.) .RE .SS "متغیرهای محیطی (Environment Variables)" ERLC_EMULATOR .RS 2 دستور راه‌اندازی شبیه‌ساز، که باید صرفاً مسیر شبیه‌ساز بدون هیچ‌گونه پارامتری باشد. پیش‌فرض آن \fIerl\fR در همان دایرکتوری برنامهٔ \fIerlc\fR است، یا چنانچه موجود نباشد، \fIerl\fR در هر یک از دایرکتوری‌های مشخص‌شده در متغیر محیطی \fIPATH\fR خواهد بود. .RE ERLC_USE_SERVER .RS 2 مقادیر مجاز عبارتند از \fIyes\fR یا \fItrue\fR برای استفاده از سرور کامپایل، و \fIno\fR یا \fIfalse\fR برای عدم استفاده از آن. اگر مقادیر دیگری داده شود، \fIerlc\fR یک پیام هشدار چاپ کرده و ادامه می‌دهد. .RE ERLC_SERVER_ID .RS 2 به \fIerlc\fR اعلام می‌کند که سرور کامپایل را با نام داده‌شده شناسایی کند؛ این امر به یک کاربر اجازه می‌دهد چندین ساخت نامرتبط را بدون تأثیرگذاری بر یکدیگر به‌صورت موازی اجرا کند که برای ماشین‌های ساخت اشتراکی و موارد مشابه مفید است. این نام باید الفبایی-عددی (alphanumeric) باشد و به‌طور پیش‌فرض خالی است. .RE.SS "همچنین ببینید (SEE ALSO)" .PP \fIerl(1)\fR, \fIcompile\fR, \fIyecc\fR, \fIsnmp\fR