.\"************************************************************************** .\"* * .\"* OCaml * .\"* * .\"* Xavier Leroy, projet Cristal, INRIA Rocquencourt * .\"* * .\"* Copyright 1996 Institut National de Recherche en Informatique et * .\"* en Automatique. * .\"* * .\"* All rights reserved. This file is distributed under the terms of * .\"* the GNU Lesser General Public License version 2.1, with the * .\"* special exception on linking described in the file LICENSE. * .\"* * .\"************************************************************************** .\" .TH OCAMLC 1 .\"***** .SH "نام (NAME)" .\"***** ocamlc \- کامپایلر بایت‌کد OCaml . .\"********* .SH "خلاصه دستور (SYNOPSIS)" .\"********* .SY ocamlc .RI [ گزینه‌ها ] .IR filename ... .YS .SY ocamlc.opt .RI [ گزینه‌ها ] .IR filename ... .YS . .\"************ .SH "توضیحات (DESCRIPTION)" .\"************ کامپایلر بایت‌کد OCaml، .BR ocamlc (1) فایل‌های منبع OCaml را به فایل‌های شیء بایت‌کد کامپایل کرده و این فایل‌های شیء را برای تولید فایل‌های اجرایی مستقل بایت‌کد پیوند می‌دهد. سپس این فایل‌های اجرایی توسط مفسر بایت‌کد .BR ocamlrun (1) اجرا می‌شوند. .P دستور .BR ocamlc (1) دارای یک رابط خط فرمان مشابه بیشتر کامپایلرهای C است. این دستور چندین نوع آرگومان را می‌پذیرد و پس از پردازش تمام گزینه‌ها، آن‌ها را به ترتیب پردازش می‌کند: .TP 4n .B \(bu آرگومان‌هایی که به .mli ختم می‌شوند به عنوان فایل‌های منبع برای رابط‌های واحد کامپایل در نظر گرفته می‌شوند. رابط‌ها نام‌های صادر شده توسط واحدهای کامپایل را مشخص می‌کنند: آن‌ها نام مقادیر را همراه با انواعشان اعلان می‌کنند، انواع داده عمومی را تعریف می‌کنند، انواع داده انتزاعی را اعلان می‌کنند و غیره. از فایل .IR x \&.mli، کامپایلر .BR ocamlc (1) یک رابط کامپایل‌شده در فایل .IR x \&.cmi تولید می‌کند. .TP 4n .B \(bu آرگومان‌هایی که به .ml ختم می‌شوند به عنوان فایل‌های منبع برای پیاده‌سازی‌های واحد کامپایل در نظر گرفته می‌شوند. پیاده‌سازی‌ها تعاریفی برای نام‌های صادر شده توسط واحد ارائه می‌دهند، و همچنین شامل عبارت‌هایی هستند که برای اثرات جانبی‌شان ارزیابی می‌شوند. از فایل .IR x \&.ml، کامپایلر .BR ocamlc (1) بایت‌کد شیء کامپایل‌شده را در فایل .IR x \&.cmo تولید می‌کند. .IP اگر فایل رابط .IR x \&.mli وجود داشته باشد، پیاده‌سازی .IR x \&.ml در برابر رابط کامپایل‌شده متناظر .IR x \&.cmi (که باید وجود داشته باشد) بررسی می‌شود. اگر هیچ رابط .IR x \&.mli ارائه نشود، کامپایل .IR x \&.ml علاوه بر فایل کد شیء کامپایل‌شده .IR x \&.cmo، یک فایل رابط کامپایل‌شده .IR x \&.cmi نیز تولید می‌کند. فایل .IR x \&.cmi تولید شده متناظر با رابطی است که هر آنچه در پیاده‌سازی .IR x \&.ml تعریف شده را صادر می‌کند. .TP 4n .B \(bu آرگومان‌هایی که به .cmo ختم می‌شوند به عنوان بایت‌کد شیء کامپایل‌شده در نظر گرفته می‌شوند. این فایل‌ها به همراه فایل‌های شیء به‌دست‌آمده از کامپایل آرگومان‌های .ml (در صورت وجود) و کتابخانه استاندارد OCaml به یکدیگر پیوند داده می‌شوند تا یک برنامه اجرایی مستقل تولید کنند. ترتیبی که آرگومان‌های .cmo و .ml در خط فرمان ارائه می‌شوند مهم است: واحدهای کامپایل در زمان اجرا به همان ترتیب مقداردهی اولیه می‌شوند، و استفاده از مؤلفه یک واحد قبل از مقداردهی اولیه آن، خطای زمان پیوند محسوب می‌شود. بنابراین، یک فایل .IR x \&.cmo داده‌شده باید قبل از تمام فایل‌های .cmo که به واحد .IR x ارجاع دارند قرار گیرد. .TP 4n .B \(bu آرگومان‌هایی که به .cma ختم می‌شوند به عنوان کتابخانه‌های بایت‌کد شیء در نظر گرفته می‌شوند. یک کتابخانه بایت‌کد شیء، مجموعه‌ای از فایل‌های بایت‌کد شیء (فایل‌های .cmo) را در یک تک‌فایل بسته‌بندی می‌کند. کتابخانه‌ها با .B ocamlc\ \-a ساخته می‌شوند (توضیحات گزینه .B \-a را در زیر ببینید). فایل‌های شیء موجود در کتابخانه مانند فایل‌های معمولی .cmo (به بالا مراجعه کنید)، به ترتیبی که هنگام ساخت فایل .cma مشخص شده بود، پیوند داده می‌شوند. تنها تفاوت این است که اگر یک فایل شیء موجود در کتابخانه در هیچ کجای برنامه ارجاع داده نشود، پیوند داده نخواهد شد. .TP 4n .B \(bu آرگومان‌هایی که به .c ختم می‌شوند به کامپایلر C ارسال می‌شوند، که یک فایل شیء .o تولید می‌کند. این فایل شیء در صورت تنظیم بودن فلگ .B \-custom با برنامه پیوند داده می‌شود (توضیحات .B \-custom را در زیر ببینید). .TP 4n .B \(bu آرگومان‌هایی که به .o یا .a ختم می‌شوند به عنوان فایل‌ها و کتابخانه‌های شیء C در نظر گرفته می‌شوند. هنگام پیوند در حالت .B \-custom (توضیحات .B \-custom را در زیر ببینید)، آن‌ها به پیونددهنده C ارسال می‌شوند. .TP 4n .B \(bu آرگومان‌هایی که به .so ختم می‌شوند به عنوان کتابخانه‌های مشترک C (DLLها) در نظر گرفته می‌شوند. در طول پیوند، آن‌ها برای توابع خارجی C که از کد OCaml به آن‌ها ارجاع داده شده جستجو می‌شوند، و نام آن‌ها در فایل اجرایی بایت‌کد تولید شده نوشته می‌شود. سپس سیستم زمان اجرا .BR ocamlrun (1) آن‌ها را در زمان شروع برنامه به صورت پویا بارگذاری می‌کند. .P خروجی مرحله پیوند، فایلی شامل بایت‌کد کامپایل‌شده است که می‌تواند توسط مفسر بایت‌کد OCaml یعنی دستور .BR ocamlrun (1) اجرا شود. اگر .B caml.out نام فایل تولید شده توسط مرحله پیوند باشد، دستور .B ocamlrun caml.out .IR arg1 " " arg2 " ... " argn کد کامپایل‌شده موجود در .B caml.out را اجرا کرده و رشته‌های نویسه‌ای .I arg1 تا .IR argn را به عنوان آرگومان به آن ارسال می‌کند. (برای جزئیات بیشتر به .BR ocamlrun (1) مراجعه کنید.) .P در بیشتر سیستم‌ها، فایل تولید شده توسط مرحله پیوند می‌تواند مستقیماً اجرا شود، مانند: .B ./caml.out .IR arg1 " " arg2 " ... " argn . فایل تولید شده دارای بیت اجرایی تنظیم‌شده است، و موفق می‌شود مفسر بایت‌کد را خودبه‌خود راه‌اندازی کند. .P دو نسخه از کامپایلر بایت‌کد وجود دارد: .B ocamlc.byte یک فایل اجرایی بایت‌کد است (یعنی با خود .BR ocamlc (1) کامپایل شده است)، در حالی که .B ocamlc.opt یک فایل اجرایی بومی (یعنی با .BR ocamlopt (1) کامپایل شده است). .B ocamlc.opt ممکن است در همه نصب‌های OCaml در دسترس نباشد. .B ocamlc یک نام مستعار برای سریع‌ترینِ این دو است؛ یعنی در صورت در دسترس بودن برای .B ocamlc.opt و در غیر این صورت برای .BR ocamlc.byte . . .\"******** .SH "گزینه‌ها (OPTIONS)" .\"******** گزینه‌های خط فرمان زیر توسط .BR ocamlc (1) شناسایی می‌شوند. .TP .B \-a ساخت یک کتابخانه (فایل .cma) با فایل‌های شیء (فایل‌های .cmo) مشخص‌شده در خط فرمان، به جای پیوند دادن آن‌ها در یک فایل اجرایی. نام کتابخانه باید با گزینه .B \-o تعیین شود. .IP اگر گزینه‌های .BR \-custom "، " \-cclib " یا " \-ccopt در خط فرمان ارسال شوند، این گزینه‌ها در کتابخانه .cma حاصل ذخیره می‌شوند. سپس، پیوند دادن با این کتابخانه به طور خودکار گزینه‌های .BR \-custom "، " \-cclib " و " \-ccopt را طوری اضافه می‌کند که گویی در خط فرمان ارائه شده‌اند، مگر اینکه گزینه .B \-noautolink داده شده باشد. علاوه بر این، زیررشته .B $CAMLORIGIN درون یک گزینه .B \-ccopt با مسیر کامل به کتابخانه .cma، بدون نام فایل، جایگزین خواهد شد. .TP .B \-absname نمایش نام‌های مطلق فایل‌ها در پیام‌های خطا. .TP .B \-no-absname عدم تلاش برای نمایش نام‌های مطلق فایل‌ها در پیام‌های خطا. .TP .B \-annot از نسخه 4.11 منسوخ شده است. لطفاً به جای آن از .BR \-bin-annot استفاده کنید. .TP .B \-bin\-annot تخلیه اطلاعات دقیق درباره کامپایل (انواع، مقیدسازی‌ها، فراخوانی‌های دم و غیره) در قالب باینری. اطلاعات مربوط به فایل .IR src .ml در فایل .IR src .cmt قرار می‌گیرد. در صورت بروز خطای نوع، تمام اطلاعات استنتاج‌شده توسط بررسی‌کننده نوع قبل از خطا تخلیه می‌شود. فایل‌های حاشیه‌نویسی تولید شده توسط .B \-bin\-annot شامل اطلاعات بیشتری بوده و بسیار فشرده‌تر از فایل‌های تولید شده توسط .BR \-annot هستند. .TP .B \-c فقط کامپایل کردن. مرحله پیوند کامپایل متوقف می‌شود. فایل‌های کد منبع به فایل‌های کامپایل‌شده تبدیل می‌شوند، اما هیچ فایل اجرایی تولید نمی‌شود. این گزینه برای کامپایل جداگانه ماژول‌ها مفید است. .TP .BI \-cc " ccomp" استفاده از .I ccomp به عنوان پیونددهنده C هنگام پیوند در حالت "زمان اجرای سفارشی" (گزینه .B \-custom را ببینید) و به عنوان کامپایلر C برای کامپایل فایل‌های منبع .c. .TP .BI \-cclib\ -l libname ارسال گزینه .BI \-l libname به پیونددهنده C هنگام پیوند در حالت "زمان اجرای سفارشی" (گزینه .B \-custom را ببینید). این کار باعث پیوند کتابخانه C داده‌شده با برنامه می‌شود. .TP .BI \-ccopt " option" ارسال .I option داده‌شده به کامپایلر و پیونددهنده C، هنگام پیوند در حالت "زمان اجرای سفارشی" (گزینه .B \-custom را ببینید). برای مثال، .BI \-ccopt\ \-L dir باعث می‌شود پیونددهنده C در دایرکتوری .IR dir به دنبال کتابخانه‌های C بگردد. .TP .BI \-color " mode" فعال یا غیرفعال کردن رنگ‌ها در پیام‌های کامپایلر (به‌ویژه هشدارها و خطاها). حالت‌های زیر پشتیبانی می‌شوند: .RS .TP .B auto استفاده از روش‌های اکتشافی برای فعال‌سازی رنگ‌ها تنها در صورتی که خروجی از آن‌ها پشتیبانی کند (یک ترمینال tty سازگار با ANSI)؛ .TP .B always فعال‌سازی بدون قید و شرط رنگ‌ها؛ .TP .B never غیرفعال کردن خروجی رنگی. .RE .IP اگر \-color ارائه نشده باشد، متغیر محیطی "OCAML_COLOR" در نظر گرفته می‌شود. مقادیر آن مانند بالا auto/always/never هستند. .IP اگر \-color ارائه نشده باشد، "OCAML_COLOR" تنظیم نشده باشد و متغیر محیطی "NO_COLOR" تنظیم شده باشد، خروجی رنگی غیرفعال می‌شود. در غیر این صورت، تنظیمات پیش‌فرض .B auto است، و روش اکتشافی فعلی بررسی می‌کند که متغیر محیطی "TERM" وجود داشته و خالی یا "dumb" نباشد، و isatty(stderr) برقرار باشد. .TP .BI \-error\-style " mode" کنترل نحوه چاپ پیام‌های خطا و هشدارها. حالت‌های زیر پشتیبانی می‌شوند: .RS .TP .B short فقط چاپ خطا و مکان آن؛ .TP .B contextual مشابه "short"، اما قطعه کد منبع متناظر با مکان خطا را نیز نمایش می‌دهد. .RE .IP تنظیمات پیش‌فرض .B contextual است. .IP اگر \-error\-style ارائه نشود، متغیر محیطی "OCAML_ERROR_STYLE" در نظر گرفته می‌شود. مقادیر آن مانند بالا short/contextual است. .TP .B \-compat\-32 بررسی اینکه آیا فایل اجرایی بایت‌کد تولید شده می‌تواند روی پلتفرم‌های ۳۲ بیتی اجرا شود یا خیر، و در صورت عدم امکان، اعلام خطا می‌کند. این گزینه هنگام کامپایل بایت‌کد روی یک ماشین ۶۴ بیتی مفید است. .TP .B \-config چاپ شماره نسخه .BR ocamlc (1) و خلاصه‌ای دقیق از پیکربندی آن، سپس خروج. .TP .BI \-config-var چاپ مقدار یک متغیر پیکربندی خاص از خروجی .BR \-config ، سپس خروج. اگر متغیر وجود نداشته باشد، کد خروج غیرصفر خواهد بود. .TP .B \-custom پیوند در حالت "زمان اجرای سفارشی" (custom runtime). در حالت پیوند پیش‌فرض، پیونددهنده بایت‌کدی تولید می‌کند که برای اجرا با سیستم زمان اجرای مشترک .BR ocamlrun (1) در نظر گرفته شده است. در حالت زمان اجرای سفارشی، پیونددهنده یک فایل خروجی تولید می‌کند که هم شامل سیستم زمان اجرا و هم بایت‌کد برنامه است. فایل حاصل بزرگتر است، اما می‌تواند مستقیماً اجرا شود، حتی اگر دستور .BR ocamlrun (1) نصب نشده باشد. علاوه بر این، حالت "زمان اجرای سفارشی" امکان پیوند کد OCaml با توابع C تعریف‌شده توسط کاربر را فراهم می‌کند. .IP هرگز از دستور .BR strip (1) روی فایل‌های اجرایی تولید شده توسط .BR ocamlc " \-custom" استفاده نکنید، زیرا این کار بخش بایت‌کد فایل اجرایی را حذف می‌کند. .IP هشدار امنیتی: هرگز بیت‌های "setuid" یا "setgid" را روی فایل‌های اجرایی تولید شده توسط .BR ocamlc " \-custom" تنظیم نکنید، زیرا این کار آن‌ها را در برابر حملات آسیب‌پذیر می‌سازد. .TP .BI \-depend " ocamldep-args" محاسبه وابستگی‌ها، همانند کاری که .BR ocamldep (1) انجام می‌دهد. .TP .BI \-dllib\ \-l libname فراهم کردن ترتیبی برای بارگذاری پویای کتابخانه مشترک C با نام .BI dll libname .so توسط سیستم زمان اجرای .BR ocamlrun (1) در زمان شروع برنامه. .TP .BI \-dllib\-suffixed\ \-l libname مشابه .BI \-dllib اما نام ثبت‌شده در زمان شروع برنامه توسط .BR ocamlrun (1) دستکاری (mangle) می‌شود. این گزینه برای کتابخانه‌های واسط C کاربرد دارد؛ این گزینه به‌ویژه توسط .BR ocamlmklib\ \-suffixed استفاده می‌شود. .TP .BI \-dllpath " dir" افزودن دایرکتوری .I dir به مسیر جستجوی زمان اجرا برای کتابخانه‌های مشترک C. در زمان پیوند، کتابخانه‌های مشترک در مسیر جستجوی استاندارد (متناظر با گزینه .B \-I ) جستجو می‌شوند. گزینه .B \-dllpath صرفاً .I dir را در فایل اجرایی تولید شده ذخیره می‌کند، جایی که .BR ocamlrun (1) می‌تواند آن را یافته و استفاده کند. .TP .BI \-for\-pack " module\-path" تولید یک فایل شیء (فایل .cmo) که می‌تواند بعداً به عنوان یک زیرماژول (با مسیر دسترسی داده‌شده) از یک واحد کامپایل ساخته‌شده با .BR \-pack گنجانده شود. برای مثال، .B ocamlc\ \-for\-pack\ P\ \-c\ A.ml فایل a.cmo را تولید می‌کند که بعداً می‌تواند با .BR "ocamlc -pack -o P.cmo a.cmo" استفاده شود. نکته: شما همچنان می‌توانید ماژولی را که بدون .B \-for\-pack کامپایل شده بسته‌بندی کنید، اما در این حالت استثناها با نام‌های نادرست چاپ خواهند شد. .TP .B \-g افزودن اطلاعات اشکال‌زدایی هنگام کامپایل و پیوند. این گزینه برای اینکه بتوان برنامه را با .BR ocamldebug (1) اشکال‌زدایی کرد و هنگام خاتمه برنامه با یک استثنای مهارنشده ردیابی پشته (backtrace) تولید نمود، الزامی است. .TP .B \-no-g عدم ثبت اطلاعات اشکال‌زدایی (پیش‌فرض). .TP .B \-i باعث می‌شود کامپایلر هنگام کامپایل یک پیاده‌سازی (فایل .ml)، تمام نام‌های تعریف‌شده را (همراه با انواع استنتاج‌شده یا تعاریفشان) چاپ کند. هیچ فایل کامپایل‌شده‌ای (فایل‌های .cmo و .cmi) تولید نمی‌شود. این کار می‌تواند برای بررسی انواع استنتاج‌شده توسط کامپایلر مفید باشد. همچنین، از آنجا که خروجی از نحو رابط‌ها پیروی می‌کند، می‌تواند در نوشتن یک رابط صریح (فایل .mli) برای یک فایل کمک کند: کافی است خروجی استاندارد کامپایلر را به یک فایل .mli هدایت کرده و آن فایل را ویرایش کنید تا تمام اعلان‌های نام‌های صادرنشده حذف شوند. .TP .B \-i-variance باعث می‌شود کامپایلر واریانس محاسبه‌شده پارامترهای نوع را برای هر اعلان نوع چاپ کند. بدون این گزینه، واریانس تنها برای انواع خصوصی یا انواع بدون تعریف صریح (مانند انواع انتزاعی) چاپ می‌شود. .TP .BI \-cmi-file " filename" بررسی نوع پیاده‌سازی منبع مورد کامپایل در برابر فایل رابط مشخص‌شده (جستجوی عادی فایل‌های .mli و .cmi را دور می‌زند). .TP .BI \-I " directory" افزودن دایرکتوری داده‌شده به فهرست دایرکتوری‌های جستجو شده برای فایل‌های رابط کامپایل‌شده (.cmi)، فایل‌های کد شیء کامپایل‌شده (.cmo)، کتابخانه‌ها (.cma)، و کتابخانه‌های C مشخص‌شده با .BI \-cclib\ \-l xxx\c \[char46] به طور پیش‌فرض، ابتدا دایرکتوری جاری و سپس دایرکتوری کتابخانه استاندارد جستجو می‌شود. دایرکتوری‌های اضافه شده با .B \-I پس از دایرکتوری جاری، به ترتیبی که در خط فرمان داده شده‌اند، اما قبل از دایرکتوری کتابخانه استاندارد جستجو می‌شوند. همچنین گزینه .BR \-nostdlib را ببینید. .IP اگر دایرکتوری داده‌شده با .BR + شروع شود، نسبت به دایرکتوری کتابخانه استاندارد در نظر گرفته می‌شود. به عنوان مثال، .B \-I\ +compiler-libs زیردایرکتوری .B compiler-libs از کتابخانه استاندارد را به مسیر جستجو اضافه می‌کند. .TP .BI \-impl " filename" کامپایل فایل .I filename به عنوان یک فایل پیاده‌سازی، حتی اگر پسوند آن .ml نباشد. .TP .BI \-intf " filename" کامپایل فایل .I filename به عنوان یک فایل رابط، حتی اگر پسوند آن .mli نباشد. .TP .BI \-intf\-suffix " string" شناسایی نام‌های فایل با پسوند .I string به عنوان فایل‌های رابط (به جای .mli پیش‌فرض). .TP .B \-keep-docs نگه‌داشتن رشته‌های مستندات در فایل‌های .cmi تولید شده. .TP .B \-keep-locs نگه‌داشتن مکان‌ها در فایل‌های .cmi تولید شده. .TP .BI \-keywords " version+list" تنظیم کلمات کلیدی بر اساس مشخصات .IR version+list . .IP این مشخصات با یک شماره نسخه اختیاری شروع می‌شود که مجموعه پایه کلمات کلیدی را تعریف می‌کند، و به دنبال آن فهرستی از کلمات کلیدی اضافی جدا شده با .IR + می‌آید تا به این مجموعه پایه اضافه شوند. بدون شماره نسخه صریح، مجموعه پایه کلمات کلیدی، مجموعه کلمات کلیدی در نسخه فعلی OCaml است. کلمات کلیدی اضافی که با هیچ کلمه کلیدی شناخته‌شده‌ای در نسخه فعلی زبان مطابقت ندارند، در صورت وجود در کد منبع باعث ایجاد خطا می‌شوند. .TP .B \-labels برچسب‌ها در انواع نادیده گرفته نمی‌شوند، برچسب‌ها ممکن است در کاربردها استفاده شوند، و پارامترهای برچسب‌دار می‌توانند به هر ترتیبی داده شوند. این حالت پیش‌فرض است. گزینه .BR \-nolabels را لغو می‌کند. .TP .BI \-launch\-method " method" سازوکار مورد استفاده توسط فایل‌های اجرایی بایت‌کد عادی برای یافتن مفسر را مشخص می‌کند. روش‌های زیر پشتیبانی می‌شوند: .RS .TP .B exe یک راه‌انداز استاب اجرایی کوچک موجود در فایل runtime-launch-info به ابتدای تصویر بایت‌کد پیوست می‌شود. .TP .B sh از یک هدر #! استفاده می‌شود. اگر مسیر کامل به مفسر مورد نیاز برای یک خط #! مناسب نباشد، یک اسکریپت شل کوچک به جای آن تولید می‌شود که از مفسر sh موجود در PATH استفاده می‌کند. .TP .B /path/interpreter مشابه sh، اما اگر مفسر نتواند در خط #! استفاده شود، به جای جستجوی sh در PATH از /path/interpreter استفاده می‌شود. .RE .TP .B \-linkall اجبار به پیوند دادن تمام ماژول‌های موجود در کتابخانه‌ها. اگر این فلگ داده نشود، ماژول‌های ارجاع‌نشده پیوند داده نمی‌شوند. هنگام ساخت یک کتابخانه (گزینه .BR \-a )، تنظیم گزینه .B \-linkall تمام پیوندهای بعدی برنامه‌های مرتبط با آن کتابخانه را مجبور می‌کند تا تمام ماژول‌های موجود در کتابخانه را پیوند دهند. هنگام کامپایل یک ماژول (گزینه .BR \-c )، تنظیم گزینه .B \-linkall تضمین می‌کند که این ماژول در صورت قرار گرفتن در یک کتابخانه و پیوند آن کتابخانه، همیشه پیوند داده خواهد شد. .TP .B \-make\-runtime ساخت یک سیستم زمان اجرای سفارشی (در فایل مشخص‌شده با گزینه .BR \-o ) که فایل‌ها و کتابخانه‌های شیء C داده‌شده در خط فرمان را در خود ادغام می‌کند. این سیستم زمان اجرای سفارشی می‌تواند بعداً برای اجرای فایل‌های اجرایی بایت‌کد تولید شده با گزینه .B ocamlc " \-use\-runtime" .IR runtime-name استفاده شود. .TP .BI \-match\-context\-rows " number" تنظیم تعداد سطرهای زمینه‌ای مورد استفاده در حین کامپایل تطبیق الگو. مقادیر کمتر باعث کامپایل سریع‌تر اما کدی با بهینه‌سازی کمتر می‌شوند. مقدار پیش‌فرض ۳۲ است. .TP .B \-no-alias-deps عدم ثبت وابستگی‌ها برای نام‌های مستعار ماژول. .TP .B \-no\-app\-funct غیرفعال کردن رفتار کاربردی (applicative) فانکتورها. با این گزینه، هر بار اعمال فانکتور، انواع جدیدی در نتیجه خود تولید می‌کند و اعمال همان فانکتور دو بار روی یک آرگومان یکسان، دو ساختار ناسازگار ایجاد می‌کند. .TP .B \-noassert عدم کامپایل بررسی‌های assertion. توجه داشته باشید که ساختار ویژه .B assert\ false همیشه کامپایل می‌شود زیرا دارای نوع‌بندی خاصی است. این فلگ هنگام پیوند فایل‌های از قبل کامپایل‌شده هیچ اثری ندارد. .TP .B \-noautolink هنگام پیوند کتابخانه‌های .cma، گزینه‌های .BR \-custom "، " \-cclib " و " \-ccopt احتمالاً موجود در کتابخانه‌ها را نادیده می‌گیرد (اگر این گزینه‌ها هنگام ساخت کتابخانه‌ها داده شده باشند). این گزینه می‌تواند زمانی مفید باشد که یک کتابخانه شامل مشخصات نادرست از کتابخانه‌های C یا گزینه‌های C باشد؛ در این حالت، هنگام پیوند، .B \-noautolink را تنظیم کرده و کتابخانه‌ها و گزینه‌های صحیح C را در خط فرمان ارسال کنید. .TP .B \-nolabels نادیده گرفتن برچسب‌های غیر اختیاری در انواع. برچسب‌ها نمی‌توانند در کاربردها استفاده شوند، و ترتیب پارامترها سخت‌گیرانه می‌شود. همچنین گزینه .BR \-labels را ببینید. .TP .B \-nostdlib عدم افزودن خودکار دایرکتوری کتابخانه استاندارد به فهرست دایرکتوری‌های جستجو شده برای فایل‌های رابط کامپایل‌شده (.cmi)، فایل‌های کد شیء کامپایل‌شده (.cmo)، کتابخانه‌ها (.cma)، و کتابخانه‌های C مشخص‌شده با .BI \-cclib\ \-l xxx\c \[char46] همچنین گزینه .BR \-I را ببینید. .TP .BI \-o " filename" مشخص کردن نام فایل خروجی نهایی، خواه یک فایل اجرایی باشد، یک شیء کامپایل‌شده (گزینه .RB \-c )، یک کتابخانه (گزینه .RB \-a )، یک شیء بسته‌بندی‌شده (گزینه .RB \-pack )، یا یک فایل شیء یا منبع C (گزینه‌های .RB \-output\-obj و .B \-output\-complete\-obj ). .IP نام خروجی پیش‌فرض برای یک فایل اجرایی به پلتفرم بستگی دارد؛ در یونیکس .B a.out و در ویندوز .B camlprog.exe است. .IP این گزینه همچنین می‌تواند هنگام کامپایل بدون پیوند یک فایل رابط یا پیاده‌سازی (گزینه .RB \-c ) استفاده شود، که در این صورت نام فایل cmi یا cmo و همچنین نام واحد کامپایل را تا اولین نقطه به .I filename تنظیم می‌کند. .TP .B \-opaque فایل‌های رابط کامپایل‌شده با این گزینه علامت‌گذاری می‌شوند تا سایر واحدهای کامپایل وابسته به آن، به هیچ‌یک از جزئیات پیاده‌سازی پیاده‌سازیِ کامپایل‌شده اتکا نکنند. کامپایلر بومی به فایل .cmx این واحد دسترسی نخواهد داشت -- و در صورت عدم وجود آن نیز هشداری نمی‌دهد. این می‌تواند سرعت کامپایل را چه برای ساخت اولیه و چه تدریجی، به قیمت کاهش کارایی کد تولید شده بهبود بخشد. .TP .BI \-open " module" باز کردن ماژول داده‌شده قبل از پردازش فایل‌های رابط یا پیاده‌سازی. اگر چندین گزینه .B \-open داده شود، آن‌ها به ترتیب پردازش می‌شوند، درست مانند اینکه عبارت‌های open! module1;; ... open! moduleN;; در بالای هر فایل اضافه شده باشند. .TP .B \-output\-obj باعث می‌شود پیونددهنده به جای یک فایل اجرایی بایت‌کد، یک فایل شیء C تولید کند. این گزینه برای بسته‌بندی کد OCaml به عنوان یک کتابخانه C، قابل فراخوانی از هر برنامه C مفید است. نام فایل شیء خروجی باید با گزینه .B \-o تعیین شود. این گزینه همچنین می‌تواند برای تولید یک فایل منبع C (با پسوند .c) یا یک کتابخانه مشترک/پویا کامپایل‌شده (با پسوند .so) استفاده شود. .TP .B \-output\-complete\-obj مشابه .B \-output\-obj است، با این تفاوت که هنگام ایجاد یک فایل شیء، سیستم زمان اجرا و کتابخانه‌های پیوند خودکار را نیز شامل می‌شود. .TP .B \-pack ساخت یک فایل شیء بایت‌کد (فایل .cmo) و رابط کامپایل‌شده مرتبط با آن (.cmi) که فایل‌های شیء داده‌شده در خط فرمان را ترکیب کرده و آن‌ها را به صورت زیرماژول‌های فایل .cmo خروجی نشان می‌دهد. نام فایل .cmo خروجی باید با گزینه .B \-o داده شود. به عنوان مثال، .B ocamlc\ \-pack\ \-o\ p.cmo\ a.cmo\ b.cmo\ c.cmo فایل‌های کامپایل‌شده p.cmo و p.cmi را تولید می‌کند که یک واحد کامپایل با سه زیرماژول A، B و C را توصیف می‌کنند، متناظر با محتویات فایل‌های شیء a.cmo، b.cmo و c.cmo. این محتویات می‌توانند در ادامه برنامه به صورت P.A، P.B و P.C ارجاع داده شوند. .IP فایل‌های شیء .cmo ترکیب‌شونده باید با گزینه مناسب .B \-for\-pack کامپایل شده باشند. در مثال بالا، a.cmo، b.cmo و c.cmo باید با .BR ocamlc\ \-for\-pack\ P کامپایل شده باشند. .TP .BI \-pp " command" باعث می‌شود کامپایلر دستور .I command داده‌شده را به عنوان یک پیش‌پردازنده برای هر فایل منبع فراخوانی کند. خروجی .I command به یک فایل میانی هدایت می‌شود که سپس کامپایل می‌گردد. در صورت عدم وجود خطای کامپایل، فایل میانی بعداً حذف می‌شود. .TP .BI \-ppx " command" پس از تجزیه، درخت نحو انتزاعی را از طریق پیش‌پردازنده .IR command ارسال می‌کند. ماژول .BR Ast_mapper (3) رابط خارجی یک پیش‌پردازنده را پیاده‌سازی می‌کند. .TP .B \-principal بررسی مسیر اطلاعات در حین بررسی نوع، برای اطمینان از اینکه همه انواع به شیوه‌ای اصلی استخراج شده‌اند. هنگام استفاده از آرگومان‌های برچسب‌دار و/یا متدهای چندریختی، این فلگ برای اطمینان از اینکه نسخه‌های آینده کامپایلر قادر به استنتاج صحیح انواع خواهند بود (حتی در صورت تغییر الگوریتم‌های داخلی) الزامی است. تمام برنامه‌های پذیرفته‌شده در حالت .B \-principal در حالت پیش‌فرض نیز با انواع معادل اما با امضاهای باینری متفاوت پذیرفته می‌شوند، و این ممکن است بررسی نوع را کند کند؛ با این حال استفاده یک‌باره از آن قبل از انتشار کد منبع ایده خوبی است. .TP .B \-no\-principal عدم بررسی اصلیت استنتاج نوع. این حالت پیش‌فرض است. .TP .B \-rectypes مجاز دانستن انواع بازگشتی دلخواه در حین بررسی نوع. به طور پیش‌فرض، فقط انواع بازگشتی که در آن‌ها بازگشت از طریق یک نوع شیء انجام می‌شود پشتیبانی می‌شوند. توجه داشته باشید که پس از ایجاد یک رابط با استفاده از این فلگ، باید دوباره از آن برای تمام وابستگی‌ها استفاده کنید. .TP .B \-no\-rectypes عدم اجازه به انواع بازگشتی دلخواه در حین بررسی نوع. این حالت پیش‌فرض است. .TP .BI \-runtime\-search " method" کنترل اینکه آیا هدر استفاده شده توسط فایل‌های اجرایی بایت‌کد عادی مجاز به جستجوی مفسر است یا به مکان ثابتی نیاز دارد. روش‌های زیر پشتیبانی می‌شوند: .RS .TP .B disable یک مسیر مطلق ثابت به مفسر استفاده می‌شود، و اگر مفسر در این مکان یافت نشود، فایل اجرایی راه‌اندازی نخواهد شد. .TP .B fallback یک مسیر مطلق ثابت به مفسر استفاده می‌شود، اما اگر فایل اجرایی نتواند مفسر را در این مکان پیدا کند، ابتدا در دایرکتوری حاوی فایل اجرایی و سپس در PATH جستجو می‌کند. .TP .B enable فایل اجرایی مفسر را ابتدا در دایرکتوری حاوی فایل اجرایی و سپس در PATH جستجو می‌کند. هیچ مسیر مطلقی به مفسر ثبت نمی‌شود. .RE .TP .BI \-runtime\-variant " suffix" افزودن .I suffix به نام کتابخانه زمان اجرا که توسط برنامه استفاده خواهد شد. در صورتی که OCaml با آن‌ها پیکربندی شده باشد، زمان‌های اجرای اشکال‌زدایی (پسوند .RB d ) و ابزار دقیق (پسوند .RB i ) می‌توانند استفاده شوند. .TP .B \-safe\-string اجبار به جداسازی بین انواع .BR string " و " bytes ، و در نتیجه فقط‌خواندنی کردن رشته‌ها. این حالت پیش‌فرض است. .TP .B \-safer\-matching عدم استفاده از اطلاعات نوع برای بهینه‌سازی تطبیق الگو. این امکان تشخیص شکست‌های تطبیق را فراهم می‌کند حتی اگر تطبیق الگو به اشتباه جامع فرض شده باشد. این مورد فقط بر کامپایل GADT و واریانت‌های چندریختی تأثیر می‌گذارد. .TP .BI \-set\-runtime\-default " setting=value" هنگام پیوند یک فایل اجرایی، مقدار پیش‌فرض را برای یک تنظیم زمان اجرا بازنویسی می‌کند. تنها تنظیم پشتیبانی‌شده فعلی عبارت است از: .RS .TP .B standard_library_default مکان پیش‌فرض مورد استفاده توسط فایل اجرایی برای تعیین محل کتابخانه استاندارد را مشخص می‌کند. به طور پیش‌فرض، این مسیر مطلق به کتابخانه استانداردی است که خود کامپایلر با آن پیکربندی شده بود. .RE .TP .B \-short\-paths هنگامی که یک نوع تحت چندین مسیر ماژول قابل مشاهده است، هنگام چاپ نام نوع در رابط‌های استنتاج‌شده و پیام‌های خطا و هشدار از کوتاه‌ترین مسیر استفاده می‌کند. .TP .BI \-stop\-after " pass" توقف کامپایل پس از مرحله کامپایل داده‌شده. مراحل پشتیبانی‌شده فعلی عبارتند از: .BR parsing ، .BR typing . .TP .B \-strict\-sequence اجبار به اینکه بخش سمت چپ هر توالی دارای نوع unit باشد. .TP .B \-no\-strict\-sequence بخش سمت چپ یک توالی نیازی نیست که نوع unit داشته باشد. این حالت پیش‌فرض است. .TP .B \-unboxed\-types هنگامی که یک نوع قابل خارج شدن از جعبه (unboxable) است (یعنی یک رکورد با یک آرگومان یا یک نوع داده مشخص با یک سازنده دارای یک آرگومان)، از جعبه خارج خواهد شد مگر اینکه با .BR [@@ocaml.boxed] حاشیه‌نویسی شده باشد. .TP .B \-no-unboxed\-types هنگامی که یک نوع قابل خارج شدن از جعبه است، در جعبه قرار می‌گیرد مگر اینکه با .BR [@@ocaml.unboxed] حاشیه‌نویسی شده باشد. این حالت پیش‌فرض است. .TP .B \-unsafe غیرفعال کردن بررسی محدوده برای دسترسی به آرایه‌ها و رشته‌ها (ساختارهای .BR v.(i) " و " s.[i] ). بنابراین برنامه‌های کامپایل‌شده با .B \-unsafe کمی سریع‌تر هستند، اما ناامن‌اند: اگر برنامه به یک آرایه یا رشته خارج از محدوده‌اش دسترسی پیدا کند، هر اتفاقی ممکن است رخ دهد. .TP .B \-unsafe\-string یکسان در نظر گرفتن انواع .BR string " و " bytes ، و در نتیجه قابل نوشتن کردن رشته‌ها. این گزینه برای سازگاری با کدهای منبع قدیمی در نظر گرفته شده و نباید با نرم‌افزارهای جدید استفاده شود. .TP .BI \-use\-runtime " runtime\-name" تولید یک فایل اجرایی بایت‌کد که می‌تواند روی سیستم زمان اجرای سفارشی .IR runtime\-name اجرا شود، که قبلاً با .B ocamlc\ \-make\-runtime .IR runtime\-name ساخته شده است. .TP .B \-v چاپ شماره نسخه کامپایلر و مکان دایرکتوری کتابخانه استاندارد، سپس خروج. .TP .B \-verbose چاپ تمام دستورات خارجی قبل از اجرای آن‌ها، به‌ویژه فراخوانی‌های کامپایلر و پیونددهنده C در حالت .B \-custom . برای اشکال‌زدایی مشکلات کتابخانه C مفید است. .TP .BR \-vnum " یا " \-version چاپ شماره نسخه کامپایلر به شکل کوتاه (مانند "3.11.0")، سپس خروج. .TP .BI \-w " warning\-list" فعال، غیرفعال یا مهلک علامت‌گذاری کردن هشدارهای مشخص‌شده توسط آرگومان .IR warning\-list . .IP هر هشدار می‌تواند .IR "فعال" " یا " "غیرفعال" باشد، و هر هشدار می‌تواند .IR "مهلک" " یا " "غیرمهلک" باشد. اگر هشداری غیرفعال باشد، نمایش داده نمی‌شود و به هیچ وجه بر کامپایل تأثیر نمی‌گذارد (حتی اگر مهلک باشد). اگر هشداری فعال باشد، هر زمان که کد منبع آن را ایجاد کند، به طور عادی توسط کامپایلر نمایش داده می‌شود. اگر فعال و مهلک باشد، کامپایلر همچنین پس از نمایش آن با یک خطا متوقف خواهد شد. .IP آرگومان .I warning\-list یا یک مشخص‌کننده یادافزای هشدار است یا توالی‌ای از مشخص‌کننده‌های هشدار تک‌نویسه‌ای، بدون جداکننده بین آن‌ها. یک مشخص‌کننده یادافزای هشدار یکی از موارد زیر است: .RS .TP .BI + name فعال‌سازی هشدار .IR name . .TP .BI \- name غیرفعال‌سازی هشدار .IR name . .TP .BI @ name فعال‌سازی و مهلک علامت‌گذاری کردن هشدار .IR name . .RE .IP یک مشخص‌کننده هشدار تک‌نویسه‌ای یکی از موارد زیر است: .RS .TP .BI + num فعال‌سازی هشدار شماره .IR num . .TP .BI \- num غیرفعال‌سازی هشدار شماره .IR num . .TP .BI @ num فعال‌سازی و مهلک علامت‌گذاری کردن هشدار شماره .IR num . .TP .BI + num1 .. num2 فعال‌سازی تمام هشدارهای بین .I num1 و .I num2 (شامل خود آن‌ها). .TP .BI \- num1 .. num2 غیرفعال‌سازی تمام هشدارهای بین .I num1 و .I num2 (شامل خود آن‌ها). .TP .BI @ num1 .. num2 فعال‌سازی و مهلک علامت‌گذاری کردن تمام هشدارهای بین .I num1 و .I num2 (شامل خود آن‌ها). .TP .BI + letter فعال‌سازی مجموعه هشدارهای متناظر با .IR letter . حرف ممکن است بزرگ یا کوچک باشد. .TP .BI \- letter غیرفعال‌سازی مجموعه هشدارهای متناظر با .IR letter . حرف ممکن است بزرگ یا کوچک باشد. .TP .BI @ letter فعال‌سازی و مهلک علامت‌گذاری کردن مجموعه هشدارهای متناظر با .IR letter . حرف ممکن است بزرگ یا کوچک باشد. .TP .I uppercase\-letter فعال‌سازی مجموعه هشدارهای متناظر با .IR uppercase\-letter . .TP .I lowercase\-letter غیرفعال‌سازی مجموعه هشدارهای متناظر با .IR lowercase\-letter . .RE .IP شماره‌های هشدار و نام‌های یادافزا به صورت زیر هستند: .RS .TP .B 1 [comment-start] علامت شروع کامنت مشکوک. .TP .B 2 [comment-not-end] علامت پایان کامنت مشکوک. .TP .B 3 قابلیت منسوخ‌شده. .TP .B 4 [fragile-match] تطبیق الگوی شکننده: تطبیقی که حتی در صورت افزودن سازنده‌های اضافی به یکی از انواع واریانت تطبیق‌داده‌شده، کامل باقی خواهد ماند. .TP .B 5 [ignored-partial-application] تابع با اعمال جزئی: عبارتی که نتیجه آن از نوع تابع بوده و نادیده گرفته شده است. .TP .B 6 [labels-omitted] حذف برچسب در اعمال تابع. .TP .B 7 [method-override] بازنویسی متد بدون استفاده از کلمه کلیدی "method!". .TP .B 8 [partial-match] تطبیق جزئی: حالت‌های ناموجود در تطبیق الگو. .TP .B 9 [missing-record-field-pattern] فیلدهای ناموجود در یک الگوی رکورد. .TP .B 10 [non-unit-statement] عبارت در سمت چپ یک توالی که دارای نوع .B unit نیست (و یک تابع نیز نیست، هشدار شماره ۵ را ببینید). .TP .B 11 [redundant-case] مورد زائد در یک تطبیق الگو (حالت تطبیق استفاده‌نشده). .TP .B 12 [redundant-subpat] زیرالگوی زائد در یک تطبیق الگو. .TP .B 13 [instance-variable-override] بازنویسی یک متغیر نمونه. .TP .B 14 [illegal-backslash] اسکیپ بک‌اسلش غیرمجاز در یک ثابت رشته‌ای. .TP .B 15 [implicit-public-methods] متد خصوصی که به طور ضمنی عمومی شده است. .TP .B 16 [unerasable-optional-argument] آرگومان اختیاری حذف‌نشدنی. .TP .B 17 [undeclared-virtual-method] متد مجازی اعلان‌نشده. .TP .B 18 [not-principal] نوع غیر اصلی (غیر principal). .TP .B 19 [non-principal-labels] نوع بدون اصلیت. .TP .B 20 [ignored-extra-argument] آرگومان تابع استفاده‌نشده. .TP .B 21 [nonreturning-statement] دستور بدون بازگشت. .TP .B 22 [preprocessor] هشدار پیش‌پردازنده. .TP .B 23 [useless-record-with] بند .B with بی‌فایده در رکورد. .TP .B 24 [bad-module-name] نام ماژول نامعتبر: نام فایل منبع، یک نام ماژول معتبر OCaml نیست. .TP .B 25 منسوخ‌شده: اکنون بخشی از هشدار ۸ است. .TP .B 26 [unused-var] متغیر استفاده‌نشده مشکوک: متغیر استفاده‌نشده‌ای که با .BR let " یا " as " ," مقید شده و با یک نویسه زیرخط (_) شروع نمی‌شود. .TP .B 27 [unused-var-strict] متغیر استفاده‌نشده بی‌خطر: متغیر استفاده‌نشده‌ای که نه با .BR let " و نه با " as " ," مقید شده و با یک نویسه زیرخط (_) شروع نمی‌شود. .TP .B 28 [wildcard-arg-to-constant-constr] یک الگو شامل یک سازنده ثابت است که روی الگوی زیرخط (_) اعمال شده است. .TP .B 29 [eol-in-string] یک پایان خط بدون اسکیپ در یک ثابت رشته‌ای یافت شد. این ممکن است باعث مشکلات قابلیت حمل بین یونیکس و ویندوز شود. .TP .B 30 [duplicate-definitions] دو برچسب یا سازنده هم‌نام در دو نوع متقابلاً بازگشتی تعریف شده‌اند. .TP .B 31 [module-linked-twice] یک ماژول دو بار در یک فایل اجرایی پیوند داده شده است. .TP .B 32 [unused-value-declaration] اعلان مقدار استفاده‌نشده. .TP .B 33 [unused-open] دستور open استفاده‌نشده. .TP .B 34 [unused-type-declaration] اعلان نوع استفاده‌نشده. .TP .B 35 [unused-for-index] اندیس حلقه for استفاده‌نشده. .TP .B 36 [unused-ancestor] متغیر نیاکان استفاده‌نشده. .TP .B 37 [unused-constructor] سازنده استفاده‌نشده. .TP .B 38 [unused-extension] سازنده افزونه استفاده‌نشده. .TP .B 39 [unused-rec-flag] فلگ rec استفاده‌نشده. .TP .B 40 [name-out-of-scope] نام سازنده یا برچسب خارج از محدوده استفاده شده است. .TP .B 41 [ambiguous-name] نام سازنده یا برچسب مبهم. .TP .B 42 [disambiguated-name] ابهام‌زدایی از نام سازنده یا برچسب. .TP .B 43 [nonoptional-label] برچسب غیر اختیاری به عنوان اختیاری اعمال شده است. .TP .B 44 [open-shadow-identifier] دستور open شناسه از قبل تعریف‌شده‌ای را سایه می‌اندازد. .TP .B 45 [open-shadow-label-constructor] دستور open برچسب یا سازنده از قبل تعریف‌شده‌ای را سایه می‌اندازد. .TP .B 46 [bad-env-variable] خطا در متغیر محیطی. .TP .B 47 [attribute-payload] بار داده‌ای صفت (attribute payload) غیرمجاز. .TP .B 48 [eliminated-optional-arguments] حذف ضمنی آرگومان‌های اختیاری. .TP .B 49 [no-cmi-file] فایل cmi ناموجود هنگام جستجوی نام مستعار ماژول. .TP .B 50 [unexpected-docstring] کامنت مستندسازی غیرمنتظره. .TP .B 51 [wrong-tailcall-expectation] فراخوانی تابع حاشیه‌نویسی‌شده با صفت نادرست @tailcall. .TP .B 52 [fragile-literal-pattern] الگوی ثابت شکننده. .TP .B 53 [misplaced-attribute] صفت نمی‌تواند در این زمینه ظاهر شود. .TP .B 54 [duplicated-attribute] صفت بیش از یک بار روی یک عبارت استفاده شده است. .TP .B 55 [inlining-impossible] درون‌خطی‌سازی ناممکن است. .TP .B 56 [unreachable-case] حالت غیرقابل دسترس در یک تطبیق الگو (بر اساس اطلاعات نوع). .TP .B 57 [ambiguous-var-in-pattern-guard] متغیرهای الگوی or مبهم تحت گارد. .TP .B 58 [no-cmx-file] فایل cmx ناموجود. .TP .B 59 [flambda-assignment-to-non-mutable-value] انتساب روی مقدار تغییرناپذیر. .TP .B 60 [unused-module] اعلان ماژول استفاده‌نشده. .TP .B 61 [unboxable-type-in-prim-decl] نوع خارج‌شدنی از جعبه بدون حاشیه‌نویسی در اعلان پایه (primitive). .TP .B 62 [constraint-on-gadt] قیود نوع روی اعلان نوع GADT. .TP .B 63 [erroneous-printed-signature] امضای چاپ‌شده نادرست. .TP .B 64 [unsafe-array-syntax-without-parsing] استفاده از -unsafe با یک پیش‌پردازنده که یک درخت نحو برمی‌گرداند. .TP .B 65 [redefining-unit] اعلان نوع که یک سازنده جدید '()' تعریف می‌کند. .TP .B 66 [unused-open-bang] دستور open! استفاده‌نشده. .TP .B 67 [unused-functor-parameter] پارامتر فانکتور استفاده‌نشده. .TP .B 68 [match-on-mutable-state-prevent-uncurry] تطبیق الگو وابسته به وضعیت تغییرپذیر مانع از uncurry شدن آرگومان‌های باقیمانده می‌شود. .TP .B 69 [unused-field] فیلد رکورد استفاده‌نشده. .TP .B 70 [missing-mli] فایل رابط ناموجود. .TP .B 71 [unused-tmc-attribute] صفت @tail_mod_cons استفاده‌نشده. .TP .B 72 [tmc-breaks-tailcall] یک فراخوانی دم توسط تبدیل @tail_mod_cons به یک فراخوانی غیر دم تبدیل می‌شود. .TP .B 73 [generative-application-expects-unit] یک فانکتور زایا به جای () روی یک ساختار خالی (struct end) اعمال شده است. .RE .IP حروف نشان‌دهنده مجموعه‌های هشدارهای زیر هستند. هر حرفی که در اینجا ذکر نشده باشد متناظر با مجموعه تهی است. .RS .TP .B A همه هشدارها .TP .B C 1, 2 .TP .B D 3 .TP .B E 4 .TP .B F 5 .TP .B K 32, 33, 34, 35, 36, 37, 38, 39 .TP .B L 6 .TP .B M 7 .TP .B P 8 .TP .B R 9 .TP .B S 10 .TP .B U 11, 12 .TP .B V 13 .TP .B X 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 30 .TP .B Y 26 .TP .B Z 27 .RE .IP تنظیمات پیش‌فرض برابر است با .BR \-w\ +a\-4\-7\-9\-27\-29\-30\-32..42\-44\-45\-48\-50\-60\-66..70-74 . توجه داشته باشید که هشدارهای .BR 5 " و " 10 بسته به سازوکارهای داخلی بررسی‌کننده نوع، همیشه صادر نمی‌شوند. .TP .BI \-warn\-error " warning\-list" علامت‌گذاری هشدارهای مشخص‌شده در آرگومان .IR warning\-list به عنوان خطا. هنگامی که یکی از این هشدارها صادر شود، کامپایلر با یک خطا متوقف خواهد شد. .I warning\-list دارای همان معنای گزینه .B \-w است: یک علامت .B + (یا یک حرف بزرگ) هشدارهای متناظر را به عنوان مهلک علامت‌گذاری می‌کند، یک علامت .B \- (یا یک حرف کوچک) آن‌ها را دوباره به هشدارهای غیرمهلک تبدیل می‌کند، و یک علامت .B @ هم هشدارهای متناظر را فعال کرده و هم آن‌ها را به عنوان مهلک علامت‌گذاری می‌کند. .IP نکته: استفاده از گزینه .B \-warn\-error در کدهای محیط عملیاتی توصیه نمی‌شود، زیرا تقریباً به طور قطع هنگام افزودن هشدارهای جدید یا اصلاح هشدارهای موجود در نسخه‌های بعدی OCaml، مانع کامپایل برنامه شما خواهد شد. .IP تنظیمات پیش‌فرض برابر است با .B \-warn\-error \-a (هیچ هشداری مهلک نیست). .TP .B \-warn\-help نمایش توضیحات تمام شماره‌های هشدار موجود. .TP .B \-where چاپ مکان کتابخانه استاندارد، سپس خروج. .TP .B \-with-runtime گنجاندن سیستم زمان اجرا در برنامه تولید شده. این حالت پیش‌فرض است. .TP .B \-without-runtime کامپایلر سیستم زمان اجرا (یا ارجاعی به آن) را در برنامه تولید شده نمی‌گنجاند؛ این سیستم باید به طور جداگانه تأمین شود. .TP .BI \- " file" پردازش .I file به عنوان نام فایل، حتی اگر با یک نویسه خط تیره (-) شروع شود. .TP .BR \-help " یا " \-\-help نمایش یک خلاصه کوتاه از نحوه استفاده و خروج. . .\"********* .SH "همچنین ببینید (SEE ALSO)" .\"********* .BR ocamlopt "(1), " ocamlrun "(1), " ocaml (1). .br .IR The\ OCaml\ user's\ manual , فصل "Batch compilation".