.TH fpc 1 "22 feb 2002" "Free Pascal" "Free Pascal Compiler" .SH "نام (NAME)" fpc \- باینری کامپایلر پاسکال آزاد (FPC) .SH "خلاصه دستور (SYNOPSIS)" .B "fpc [options] [sourcefile]" .BR .SH "توضیحات (DESCRIPTION)" این باینری، باینری اصلی .I Free Pascal Compiler (FPC) است که یک کامپایلر پاسکال چندمقصده و مستقل (بدون نیاز به فرانت‌اند GCC) و سازگار با .I Turbo Pascal و .I Delphi (7.0) می‌باشد. .PP این کامپایلر از .BR LD (1) استفاده می‌کند و می‌تواند از .BR AS (1) (پارامتر \-Aas را ببینید) نیز استفاده کند، اما دارای نویسنده شیء باینری اختصاصی خود نیز هست. .PP مقصدهای اصلی فعلی عبارتند از .I Go32V2 (گسترش‌دهنده DOS DJGPP)، .I Freebsd، .I Linux، .I MacOS، .I MacOSX، .I MorphOS، .I Netware، .I OS/2 و .I Win32. سایر مقصدها (کامپایلرهای M68K برای Atari و Amiga) یا بر پایه نسخه‌های قدیمی‌تر کامپایلر هستند یا همچنان در حال توسعه می‌باشند. .PP این صفحه راهنما صرفاً برای ارجاع سریع است. FPC به همراه یک دفترچه راهنمای جامع (بیش از ۲۰۰۰ صفحه) ارائه می‌شود که دائماً به‌روزرسانی می‌شود، در حالی که ممکن است این صفحه راهنما قدیمی باشد. .SH "شماره نسخه (VERSION NUMBER)" از نگارش 1.0 به بعد، یک سامانه جدید شماره‌گذاری نسخه پیاده‌سازی شده است. اگر رقم آخر زوج باشد (مانند 1.0، 1.0.2)، نسخه پایدار است و اگر رقم آخر فرد باشد، یک نسخه توسعه در حال تغییر روزانه است (مانند 1.0.5، 1.1)، درست همانند هسته Linux. .PP با این حال، نسخه 0.99.5 یک نگارش پایدار است. این نسخه پیش از معرفی سامانه نام‌گذاری نسخه‌های زوج/فرد ایجاد شده بود. .SH "نحوه استفاده (USAGE)" فرآیند کامپایل با وارد کردن .I fpc به همراه نام یک فایل منبع (معمولاً با پسوند .pas یا .pp) آغاز می‌شود. پیش از پردازش واقعی فایل منبع، .BR fpc.cfg (5) که فایل پیکربندی کامپایلر است خوانده می‌شود؛ این فایل حاوی محل قرارگیری RTL، سایر بسته‌ها (FCL، FreeVision) و مقادیر پیش‌فرض اختیاری برای برخی از سوئیچ‌ها است. برای اطلاعات بیشتر، به صفحه راهنمای مجزای .BR fpc.cfg (5) مراجعه کنید. .SH "گزینه‌ها (OPTIONS)" .PP گزینه‌های عمومی .TP .BI \-h اگر این گزینه را مشخص کنید، کامپایلر فهرستی از تمام گزینه‌ها را در خروجی چاپ کرده و سپس خارج می‌شود. .TP .BI \-? مشابه \-h، اما پس از هر صفحه کامل منتظر فشردن کلید Enter می‌ماند. .TP .BI \-i این گزینه به کامپایلر اعلام می‌کند که اطلاعات حق نشر (کپی‌رایت) را چاپ کند. می‌توانید گزینه‌ای به شکل \-ixxx به آن بدهید که در آن "xxx" می‌تواند یکی از موارد زیر باشد: .RS .TP .I D تاریخ کامپایلر را برمی‌گرداند. .TP .I V نسخه کامپایلر را برمی‌گرداند. .TP .I SO سیستم‌عامل کامپایلر را برمی‌گرداند. .TP .I SP پردازنده کامپایلر را برمی‌گرداند. .TP .I TO سیستم‌عامل مقصد را برمی‌گرداند. .TP .I TP پردازنده مقصد را برمی‌گرداند. .RE .TP .I \-l در بالای خروجی خطی چاپ می‌کند که نام این برنامه و نسخه آن را مشخص می‌نماید. .TP .I \-n به کامپایلر اعلام می‌کند که فایل پیکربندی .BR fpc.cfg (5) را نخواند. .PP گزینه‌های دریافت بازخورد .TP .BI \-v xxx حالت پرگو (Verbose). مقدار "xxx" ترکیبی از موارد زیر است: .RS .TP .I e به کامپایلر اعلام می‌کند فقط خطاها را نمایش دهد. این گزینه به صورت پیش‌فرض فعال است. .TP .I i به کامپایلر اعلام می‌کند برخی اطلاعات عمومی را نمایش دهد. .TP .I w به کامپایلر اعلام می‌کند هشدارها را صادر کند. .TP .I n به کامپایلر اعلام می‌کند یادداشت‌ها (notes) را صادر کند. .TP .I h به کامپایلر اعلام می‌کند نکات راهنما (hints) را صادر کند. .TP .I l به کامپایلر اعلام می‌کند حین پردازش یک فایل، شماره خطوط را نمایش دهد. شماره‌ها هر ۱۰۰ خط نشان داده می‌شوند. .TP .I u به کامپایلر اعلام می‌کند نام فایل‌هایی را که باز می‌کند چاپ کند. .TP .I t به کامپایلر اعلام می‌کند نام فایل‌هایی را که سعی در باز کردنشان دارد چاپ کند. .TP .I p به کامپایلر اعلام می‌کند نام رویه‌ها (procedures) و توابع را حین پردازش آن‌ها چاپ کند. .TP .I c به کامپایلر اعلام می‌کند هنگام پردازش یک دستور شرطی هشدار دهد. .TP .I m به کامپایلر اعلام می‌کند ماکروهای تعریف‌شده را بنویسد. .TP .I d به کامپایلر اعلام می‌کند سایر اطلاعات اشکال‌زدایی را بنویسد. .TP .I a به کامپایلر اعلام می‌کند تمام اطلاعات ممکن را بنویسد. (این معادل مشخص کردن همه گزینه‌ها است) .TP .I 0 به کامپایلر اعلام می‌کند هیچ پیامی ننویسد. این گزینه زمانی مفید است که بخواهید تنظیمات پیش‌فرض در فایل پیکربندی را نادیده بگیرید. .TP .I b به کامپایلر اعلام می‌کند در صورت رخ دادن خطای تابع سربارگذاری‌شده (overloaded function)، تمام اعلان‌های رویه را نمایش دهد. .TP .I x به کامپایلر اعلام می‌کند مقداری اطلاعات فایل اجرایی را در خروجی نمایش دهد (فقط برای پلتفرم Win32). .TP .I r حالت سازگاری با Rhide/GCC: قالب خطاها را تغییر می‌دهد تا برای RHIDE قابل فهم باشند. .RE .PP گزینه‌های مربوط به فایل‌ها و دایرکتوری‌ها .TP .BI \-e xxx به کامپایلر اعلام می‌کند که .I xxx دایرکتوری‌ای است که می‌تواند فایل‌های اجرایی as (اسمبلر) و ld (پیونددهنده) را در آن پیدا کند. .TP .BI \-FD مشابه .I \-e. .TP .BI \-Fe xxx این گزینه به کامپایلر اعلام می‌کند که خطاها و غیره را در فایل .I xxx بنویسد. .TP .BI \-FE xxx مسیر خروجی فایل اجرایی/یونیت را روی .I xxx تنظیم می‌کند. .TP .BI \-Fi xxx مسیر .I xxx را به مسیری که کامپایلر در آن به دنبال فایل‌های الحاقی (include) می‌گردد اضافه می‌کند..TP .BI \-Fl xxx مسیر .I xxx را به مسیر جستجوی کتابخانه‌ها می‌افزاید و به پیونددهنده (linker) ارسال می‌شود. .TP .BI \-FL xxx (فقط در Linux) به کامپایلر اعلام می‌کند که از .I xxx به‌عنوان پیونددهندهٔ پویا استفاده کند. مقدار پیش‌فرض آن /lib/ld-linux.so.2 یا lib/ld-linux.so.1 است (بسته به این‌که کدام‌یک یافت شود). .TP .BI \-Fo xxx مسیر .I xxx را به مسیر فایل‌های شیء (object) می‌افزاید. از این مسیر هنگام جستجو برای فایل‌هایی که باید پیوند داده شوند استفاده می‌شود. .TP .BI \-Fr xxx به کامپایلر اعلام می‌کند که .I xxx حاوی پیام‌های کامپایلر است. کامپایلر به‌طور پیش‌فرض دارای پیام‌های توکار است. تعیین این گزینه پیام‌های پیش‌فرض را لغو و جایگزین می‌کند (در صورتی که بخواهید از زبانی غیر از زبان پیش‌فرض استفاده کنید مفید است). .TP .BI \-Fu xxx مسیر .I xxx را به مسیر واحدها (unit path) می‌افزاید. به‌طور پیش‌فرض، کامپایلر فقط در دایرکتوری جاری و دایرکتوری محل قرارگیری خودِ کامپایلر به جستجوی واحدها می‌پردازد. این گزینه به کامپایلر می‌گوید که در دایرکتوری .I xxx نیز جستجو کند. . .TP .BI \-FU xxx به کامپایلر اعلام می‌کند که واحدها را به‌جای دایرکتوری جاری در دایرکتوری .I xxx بنویسد. .TP .BI \-I xxx مسیر .I xxx را به مسیر جستجوی فایل‌های include اضافه می‌کند. از این مسیر هنگام جستجو برای فایل‌های include استفاده می‌شود. .PP گزینه‌های مهار نوع خروجی؛ برای اطلاعات بیشتر دربارهٔ این گزینه‌ها، به راهنمای برنامه‌نویسان نیز مراجعه کنید. .TP .BI \-a به کامپایلر اعلام می‌کند که فایل اسمبلی را حذف نکند. این مورد همچنین برای اسکریپت دسته‌ایِ (احتمالاً) تولیدشده نیز صدق می‌کند. .TP .BI \-al به کامپایلر اعلام می‌کند که خطوط کد منبع را به‌صورت یادداشت (کامنت) در فایل اسمبلی بگنجاند. .TP .BI \-an به کامپایلر اعلام می‌کند که اطلاعات گره (node) را در فایل اسمبلیِ تولیدشده قرار دهد. این مورد عمدتاً برای استفادهٔ توسعه‌دهندگان کامپایلر است. .TP .BI \-ap به کامپایلر می‌گوید برای برقراری ارتباط با اسمبلر از لوله‌ها (pipeها) استفاده کند. .TP .BI \-ar به کامپایلر می‌گوید اطلاعات تخصیص/آزادسازی ثبات‌ها (register) را درج کند. .TP .BI \-at به کامپایلر می‌گوید اطلاعات تخصیص/آزادسازی ثبات‌های موقت را درج کند. .TP .BI \-A xxx مشخص می‌کند چه نوع کد اسمبلی باید تولید شود. در اینجا .I xxx یکی از موارد زیر است: .RS .TP .I AS یک فایل شیء ‎.o یونیکس با استفاده از .I GNU AS .TP .I coff فایل شیء coff (go32) با استفاده از نویسندهٔ داخلی. .TP .I default استفاده از نویسندهٔ پیش‌فرض برای پلتفرم فعلی. .TP .I elf فایل شیء elf (فقط لینوکس ۳۲ بیتی) با استفاده از نویسندهٔ داخلی. .TP .I nasmcoff یک فایل coff با استفاده از اسمبلر .I nasm .TP .I nasmelf یک فایل ELF32 (فقط در LINUX) با استفاده از اسمبلر .I nasm .TP .I nasmobj یک فایل obj با استفاده از اسمبلر .I nasm .TP .I masm یک فایل obj با استفاده از اسمبلر .I masm مایکروسافت. .TP .I pecoff فایل شیء pecoff (ویندوز ۳۲ بیتی) با استفاده از نویسندهٔ داخلی. .TP .I tasm یک فایل obj با استفاده از اسمبلر .I tasm بورلند. .TP .I wasm یک فایل obj با استفاده از اسمبلر Watcom. .RE .TP .BI \-Ccxxx تنظیم قرارداد فراخوانی (calling convention) پیش‌فرض روی XXX. .TP .BI \-CD ایجاد کتابخانهٔ پویا. .TP .TP .BI \-Ce کامپایل با استفاده از دستورالعمل‌های شبیه‌سازی‌شدهٔ ممیز شناور. .TP .BI \-Cfxxx تنظیم مجموعه دستورالعمل‌های ممیز شناور مورداستفاده روی xxx. .TP .BI \-Cg تولید کد PIC (مستقل از موقعیت). .TP .BI \-Ch xxx رزرو کردن .I xxx بایت از حافظهٔ هیپ (heap). مقدار .I xxx باید بین 1024 و 67107840 باشد. .TP .BI \-Ci تولید کد بررسی ورودی/خروجی (I/O). .TP .BI \-Cn صرف‌نظر کردن از مرحلهٔ پیونددهی (linking). .TP .BI \-Co تولید کد بررسی سرریز اعداد صحیح. .TP .BI \-CR اعتبارسنجی درستی فراخوانی شیء (فراخوانی متدها باید معتبر باشند). .TP .BI \-Cr تولید کد بررسی محدوده (range checking). .TP .BI \-Cs xxx تنظیم اندازهٔ پشته (stack) روی .I xxx بایت. .TP .BI \-Ct تولید کد بررسی پشته. .TP .BI \-CX ایجاد یک کتابخانه با پیوند هوشمند (smartlinked). .TP .BI \-d xxx تعریف نام نماد .I xxx این گزینه می‌تواند برای کامپایل شرطی بخش‌هایی از کد شما استفاده شود. .TP .BI \-E مشابه ‎\-Cn. .TP .BI \-g تولید اطلاعات اشکال‌زدایی جهت اشکال‌زدایی با .I GDB . .TP .BI \-gg مشابه .B \-g. .TP .BI \-gd تولید اطلاعات اشکال‌زدایی برای dbx. .TP .BI \-gh استفاده از واحد heaptrc (بخش واحدهای راهنمای FPC را ببینید). .TP .BI \-gl استفاده از واحد lineinfo برای اطلاعات خطوط (بخش واحدهای راهنمای FPC را ببینید). .TP .BI \-gv تولید اطلاعات برای اشکال‌زدایی با valgrind..TP .BI \-gw تولید اطلاعات اشکال‌زدایی DWARF. .TP .BI \-O xxx بهینه‌سازی خروجی کامپایلر؛ .I xxx می‌تواند یکی از مقادیر زیر باشد: .RS .TP .I g بهینه‌سازی برای اندازه، تلاش برای تولید کد کوچک‌تر. .TP .I G بهینه‌سازی برای زمان، تلاش برای تولید کد سریع‌تر (پیش‌فرض). .TP .I r نگه‌داشتن متغیرهای خاص در ثبات‌ها (آزمایشی، با احتیاط استفاده شود). .TP .I u بهینه‌سازی‌های نامطمئن .TP .I 1 بهینه‌سازی‌های سطح ۱ (بهینه‌سازی‌های سریع). .TP .I 2 بهینه‌سازی‌های سطح ۲ (\-O1 به‌علاوه برخی بهینه‌سازی‌های کُندتر). .TP .I 3 بهینه‌سازی‌های سطح ۳ (\-O2 به‌علاوه \-Ou). .TP .I pn مشخص کردن پردازنده: n می‌تواند یکی از موارد زیر باشد .RS .TP .I 1 بهینه‌سازی برای 386/486 .TP .I 2 بهینه‌سازی برای Pentium/PentiumMMX (tm) .TP .I 3 بهینه‌سازی‌ها برای PentiumPro / P-II / Cyrix 6x86 / K6 (tm) .RE تأثیر دقیق این گزینه‌ها را می‌توانید در بخش برنامه‌نویسانِ راهنما بیابید. .RE .TP .BI \-o xxx به کامپایلر اعلام می‌کند که از .I xxx به‌عنوان نام فایل خروجی (قابل اجرا) استفاده کند. تنها برای برنامه‌ها. .TP .BI \-pg تولید کد پروفایلر برای gprof. .TP .BI \-s به کامپایلر اعلام می‌کند که اسمبلر و پیونددهنده را فراخوانی نکند. در عوض، کامپایلر یک اسکریپت می‌نویسد؛ PPAS.BAT در DOS، یا ppas.sh در Linux، که پس از آن می‌تواند برای تولید فایل قابل اجرا، اجرا شود. .TP .BI \-sh به کامپایلر اعلام می‌کند اسکریپتی تولید کند که بتوان از آن برای اسمبل کردن و پیوند دادن روی سیستم میزبان، و نه روی سیستم هدف، استفاده کرد. هنگام کامپایل چندسکویی از این گزینه استفاده کنید. .TP .BI \-sr نادیده گرفتن مرحلهٔ تخصیص ثبات در کامپایلر (همراه با \-ar استفاده شود) .TP .BI \-st به کامپایلر اعلام می‌کند اسکریپتی تولید کند که بتوان از آن برای اسمبل کردن و پیوند دادن روی سیستم هدف، و نه روی سیستم میزبان، استفاده کرد. هنگام کامپایل چندسکویی از این گزینه استفاده کنید. .TP .BI \-T xxx سیستم‌عامل هدف را مشخص می‌کند. .I xxx می‌تواند یکی از موارد زیر باشد: .RS .TP .I EMX سیستم‌عامل‌های OS/2 و DOS از طریق افزونهٔ EMX. .TP .I FREEBSD FreeBSD .TP .I GO32V2 سیستم‌عامل DOS و نسخهٔ ۲ افزونهٔ DJ DELORIE. .TP .I LINUX Linux. .TP .I NETBSD NetBSD. .TP .I NETWARE ماژول Novell Netware (clib) .TP .I NETLIBC ماژول Novell Netware (libc) .TP .I OPENBSD OpenBSD .TP .I OS2 سیستم‌عامل OS/2 (حالت بومی) .TP .I SunOS Solaris SunOS .TP .I WATCOM افزونهٔ داس WatCOM .TP .I WDOSX افزونهٔ داس WDosX .TP .I WIN32 ویندوز ۳۲ بیتی. .RE .TP .BI \-u xxx تعریف نماد .I xxx را در صورت تعریف شدن لغو می‌کند. این گزینه معکوس گزینهٔ .B \-d است. .TP .BI \-X x گزینه‌های فایل اجرایی. این گزینه‌ها به کامپایلر مشخص می‌کنند چه نوع فایل اجرایی باید تولید شود. پارامتر .I x می‌تواند یکی از موارد زیر باشد: .RS .TP .I c (فقط در Linux، منسوخ‌شده) پیوند با کتابخانهٔ C. تنها زمانی باید از این گزینه استفاده کنید که شروع به پورت کردن Free Pascal به سیستم‌عامل دیگری کرده باشید. .TP .I D پیوند با کتابخانه‌های پویا (نماد FPC_LINK_DYNAMIC را تعریف می‌کند) .TP .I d عدم استفاده از مسیر استاندارد کتابخانه. هنگام کامپایل چندسکویی برای جلوگیری از پیوند با کتابخانه‌های سیستم‌عامل میزبان از این گزینه استفاده کنید. .TP .I Pxxx افزودن xxx به ابتدای نام‌های binutils (as, ld). برای استفاده هنگام کامپایل چندسکویی. .TP .I rxxx تنظیم مسیر جستجوی کتابخانه روی xxx. .TP .I s حذف نمادها از فایل اجرایی. .TP .I S پیوند با کتابخانه‌های ایستا (نماد FPC_LINK_STATIC را تعریف می‌کند) .TP .I t پیوند به‌صورت ایستا (گزینهٔ \-static را به پیونددهنده ارسال می‌کند) .TP .I X پیوند هوشمند. استفاده از این گزینه نماد FPC_LINK_SMART را تنظیم می‌کند. .RE .PP گزینه‌های مربوط به فایل‌های مبدأ (گزینه‌های زبان) برای اطلاعات بیشتر در مورد این گزینه‌ها، همچنین به راهنمای برنامه‌نویسان مراجعه کنید .TP .BI \-M mode مشخص کردن حالت زبان. .I mode می‌تواند یکی از موارد زیر باشد: .RS .TP .I delphi حالت سازگاری با Delphi. این حالت یونیت objpas را بارگذاری کرده و حالت ansistring را فعال می‌کند ( .B \-Sh ). .TP .I fpc حالت پیش‌فرض. .TP .I gpc حالت GNU pascal (در حال حاضر کاری انجام نمی‌دهد) .TP .I macpas حالت Mac pascal. این حالت یونیت macpas را بارگذاری کرده و برخی افزونه‌های Mac را فعال می‌کند (عمدتاً ماکروها) .TP .I objfpc حالت Object Pascal. این حالت یونیت objpas را بارگذاری می‌کند. .TP .I tp حالت Turbo Pascal. .RE .TP .BI \-R xxx مشخص می‌کند از چه اسمبلری در بلوک‌های کد اسمبلی "asm" خود استفاده می‌کنید. در اینجا .I xxx یکی از موارد زیر است: .RS.TP .I att بلوک‌های Asm شامل اسمبلی AT&T هستند. .TP .I intel بلوک‌های Asm شامل اسمبلی Intel هستند. .TP .I default استفاده از اسمبلر پیش‌فرض برای پلتفرم انتخاب‌شده. .RE .TP .BI \-S2 فعال‌سازی افزونه‌های Delphi 2. .TP .BI \-Sa تولید کد برای assertionها. .TP .BI \-Sc پشتیبانی از عملگرهای سبک C، مانند *=، +=، /= و \-=. .TP .BI \-Sd تلاش برای سازگاری با Delphi. .TP .BI \-Se کامپایلر پس از اولین خطا متوقف می‌شود. در حالت معمول، کامپایلر سعی می‌کند پس از بروز خطا به کامپایل ادامه دهد، تا زمانی که به ۵۰ خطا برسد، یا یک خطای مهلک رخ دهد، و سپس متوقف می‌شود. با این سوئیچ، کامپایلر پس از اولین خطا متوقف خواهد شد. .TP .BI \-Sg پشتیبانی از دستورهای label و goto. .TP .BI \-Sh استفاده از ansistringها به صورت پیش‌فرض. .TP .BI \-SIxxx تعیین نوع رابط‌ها (interfaces). .I xxx می‌تواند یکی از موارد زیر باشد: .RS .TP .I COM استفاده از رابط‌های COM (همه رابط‌ها از IUnknown مشتق می‌شوند). .TP .I CORBA استفاده از رابط‌های CORBA (هیچ وراثتی فرض نمی‌شود). .RE .TP .BI \-Si پشتیبانی از INLINE به سبک ++C. .TP .BI \-Sm پشتیبانی از ماکروهای به سبک C. .TP .BI \-So تلاش برای سازگاری با Borland TP 7.0 (بدون سربارگذاری توابع و غیره). .TP .BI \-Sp تلاش برای سازگاری با .I GPC (GNU Pascal Compiler) . .TP .BI \-Ss نام سازنده‌ها (constructors) باید \(lqinit\(rq و نام مخرب‌ها (destructors) باید \(lqdone\(rq باشد. .TP .BI \-St مجاز دانستن کلیدواژه \(lqstatic\(rq در اشیاء. .TP .BI \-Un نام یونیت بررسی نشود. در حالت عادی، نام یونیت با نام فایل یکسان است. این گزینه اجازه می‌دهد که این دو متفاوت باشند. .TP .BI \-Ur ایجاد یک یونیت انتشار (release unit). این گزینه پرچم خاصی را در یونیت تنظیم می‌کند که باعث می‌شود کامپایلر به دنبال فایل‌های منبع نگردد. .TP .BI \-Us کامپایل یک یونیت سیستمی (system unit). این گزینه باعث می‌شود که کامپایلر تنها برخی از انواع بسیار پایه‌ای را تعریف کند. .SH "همچنین ببینید (SEE ALSO)" .BR fpc.cfg (5) .BR ppdep (1) .BR ppudump (1) .BR ppumove (1) .BR ptop (1) .BR h2pas (1) .BR ld (1) .BR as (1)