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