.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "GCCGO 1" .TH GCCGO 1 2026-08-10 gcc-16 GNU .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" gccgo \- کامپایلر مبتنی بر GCC برای زبان گو .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" gccgo [\fB\-c\fR|\fB\-S\fR] [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR] [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...] [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR... .PP تنها پرکاربردترین گزینه‌ها در اینجا فهرست شده‌اند؛ برای سایر موارد ادامهٔ متن را ببینید. .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \fBgccgo\fR یک فرانت‌اند برای \fBgcc\fR است و از بسیاری از گزینه‌های مشابه پشتیبانی می‌کند. این راهنما تنها گزینه‌های ویژهٔ \fBgccgo\fR را مستندسازی می‌کند. .PP دستور \fBgccgo\fR می‌تواند برای کامپایل کد منبع زبان برنامه‌نویسی گو به یک فایل شیء (object file)، پیوند دادن مجموعه‌ای از فایل‌های شیء با یکدیگر، یا انجام هر دو به صورت متوالی استفاده شود. .PP کد منبع گو به صورت بسته (package) کامپایل می‌شود. یک بسته شامل یک یا چند فایل منبع گو است. تمام فایل‌های موجود در یک بسته باید به صورت یکپارچه با هم کامپایل شوند، که این کار با ارسال تمام فایل‌ها به عنوان آرگومان به \&\fBgccgo\fR انجام می‌گیرد. هر بار فراخوانی \fBgccgo\fR تنها می‌تواند یک بستهٔ منفرد را کامپایل کند. .PP یک بستهٔ گو می‌تواند بستهٔ دیگری را \f(CW\*(C`import\*(C'\fR کند. بستهٔ واردشده باید از قبل کامپایل شده باشد؛ \fBgccgo\fR داده‌های واردات را مستقیماً از بستهٔ کامپایل‌شده می‌خواند. هنگامی که این بسته بعداً پیوند داده می‌شود، شکل کامپایل‌شدهٔ بسته باید در دستور پیوند گنجانده شود. .PP برنامه‌های گو به‌طور کلی باید با اطلاعات اشکال‌زدایی کامپایل شوند، و \&\fB\-g1\fR همان‌طور که در ادامه شرح داده شده گزینهٔ پیش‌فرض است. حذف نمادها (stripping) از یک برنامهٔ گو معمولاً باعث رفتار نادرست یا خرابی آن خواهد شد. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP \fB\-I\fR\fIdir\fR 4 .IX Item "-Idir" پوشه‌ای را جهت استفاده در هنگام جستجو برای یک بستهٔ وارداتی در زمان کامپایل مشخص می‌کند. .IP \fB\-L\fR\fIdir\fR 4 .IX Item "-Ldir" هنگام پیوند دادن، مانند \&\fBgcc\fR، پوشه‌ای را برای جستجوی کتابخانه‌ها مشخص می‌کند. .IP \fB\-fgo\-pkgpath=\fR\fIstring\fR 4 .IX Item "-fgo-pkgpath=string" مسیر بسته (package path) مورد استفاده را تعیین می‌کند. این گزینه مقداری را که توسط متد PkgPath از شیءهای reflect.Type بازگردانده می‌شود، تنظیم می‌کند. همچنین برای نام نمادهای قابل رؤیت در سطح سراسری استفاده می‌شود. آرگومان این گزینه معمولاً باید رشته‌ای باشد که پس از نصب این بسته برای وارد کردن آن استفاده خواهد شد؛ به عبارت دیگر، یک مسیر پرونده در پوشه‌های مشخص‌شده توسط گزینهٔ \fB\-I\fR است. .IP \fB\-fgo\-prefix=\fR\fIstring\fR 4 .IX Item "-fgo-prefix=string" یک جایگزین برای \fB\-fgo\-pkgpath\fR است. این آرگومان با نام بسته از فایل منبع ترکیب می‌شود تا مسیر بسته ایجاد شود. اگر از \fB\-fgo\-pkgpath\fR استفاده شود، \fB\-fgo\-prefix\fR نادیده گرفته خواهد شد. .Sp زبان گو اجازه می‌دهد تا یک برنامهٔ منفرد شامل بیش از یک بسته با نام یکسان در عبارت \f(CW\*(C`package\*(C'\fR در فایل منبع باشد، اگرچه بدیهی است که این دو بسته باید با استفاده از مسیرهای متفاوتی وارد شوند. برای اینکه این قابلیت در \fBgccgo\fR کار کند، باید هنگام کامپایل بسته یکی از گزینه‌های \&\fB\-fgo\-pkgpath\fR یا \fB\-fgo\-prefix\fR مشخص شود. .Sp استفاده از هر یک از گزینه‌های \fB\-fgo\-pkgpath\fR یا \fB\-fgo\-prefix\fR رفتار ویژه با بستهٔ \f(CW\*(C`main\*(C'\fR را غیرفعال کرده و اجازه می‌دهد این بسته مانند هر بستهٔ دیگری وارد شود. .IP \fB\-fgo\-relative\-import\-path=\fR\fIdir\fR 4 .IX Item "-fgo-relative-import-path=dir" یک واردات نسبی (relative import)، وارداتی است که با \fI./\fR یا \&\fI../\fR آغاز می‌شود. اگر از این گزینه استفاده شود، \fBgccgo\fR هنگام جستجو برای آن، از \&\fIdir\fR به عنوان پیشوند واردات نسبی استفاده خواهد کرد. .IP \fB\-frequire\-return\-statement\fR 4 .IX Item "-frequire-return-statement" .PD 0 .IP \fB\-fno\-require\-return\-statement\fR 4 .IX Item "-fno-require-return-statement" .PD به‌طور پیش‌فرض، \fBgccgo\fR دربارهٔ توابعی که یک یا چند پارامتر بازگشتی دارند اما فاقد عبارت صریح \f(CW\*(C`return\*(C'\fR هستند هشدار می‌دهد. این هشدار را می‌توان با استفاده از \&\fB\-fno\-require\-return\-statement\fR غیرفعال کرد. .IP \fB\-fgo\-check\-divide\-zero\fR 4 .IX Item "-fgo-check-divide-zero" بررسی‌های صریح برای تقسیم بر صفر اضافه می‌کند. در زبان گو تقسیم (یا باقیمانده) بر صفر موجب بروز پنیک (panic) می‌شود. در سیستم‌های یونیکس این وضعیت در زمان اجرا با گرفتن سیگنال \f(CW\*(C`SIGFPE\*(C'\fR شناسایی می‌شود. برخی از پردازنده‌ها، مانند PowerPC، در هنگام تقسیم بر صفر سیگنال SIGFPE تولید نمی‌کنند. همچنین برخی از محیط‌های اجرایی سیگنالی تولید نمی‌کنند که قابل دریافت باشد. در چنین سیستم‌هایی، می‌توان از این گزینه استفاده کرد. یا می‌توان این بررسی‌ها را از طریق \&\fB\-fno\-go\-check\-divide\-zero\fR حذف کرد. این گزینه در حال حاضر به‌طور پیش‌فرض فعال است، اما در آینده ممکن است در سیستم‌هایی که به آن نیاز ندارند به‌طور پیش‌فرض غیرفعال شود. .IP \fB\-fgo\-check\-divide\-overflow\fR 4 .IX Item "-fgo-check-divide-overflow" بررسی‌های صریح برای سرریز تقسیم اضافه می‌کند. برای مثال، سرریز تقسیم هنگام محاسبهٔ \f(CW\*(C`INT_MIN / \-1\*(C'\fR رخ می‌دهد. در زبان گو این مقدار باید سرریز چرخشی داشته باشد (wrap شود) تا \f(CW\*(C`INT_MIN\*(C'\fR تولید شود. برخی از پردازنده‌ها، مانند x86، در هنگام سرریز تقسیم یک تله (trap) ایجاد می‌کنند. در چنین سیستم‌هایی، می‌توان از این گزینه استفاده کرد. یا می‌توان این بررسی‌ها را از طریق \&\fB\-fno\-go\-check\-divide\-overflow\fR حذف نمود. این گزینه در حال حاضر به‌طور پیش‌فرض فعال است، اما در آینده ممکن است در سیستم‌هایی که به آن نیاز ندارند به‌طور پیش‌فرض غیرفعال شود. .IP \fB\-fno\-go\-optimize\-allocs\fR 4 .IX Item "-fno-go-optimize-allocs" تحلیل گریز (escape analysis) را غیرفعال می‌کند؛ تحلیلی که تلاش می‌کند اشیاء را به جای هیپ (heap) بر روی پشته (stack) تخصیص دهد. .IP \fB\-fgo\-debug\-escape\fR\fIn\fR 4 .IX Item "-fgo-debug-escapen" اطلاعات اشکال‌زدایی تحلیل گریز را در خروجی نمایش می‌دهد. مقادیر بزرگ‌تر \&\fIn\fR اطلاعات بیشتری تولید می‌کنند. .IP \fB\-fgo\-debug\-escape\-hash=\fR\fIn\fR 4 .IX Item "-fgo-debug-escape-hash=n" یک مقدار هش برای اشکال‌زدایی تحلیل گریز. \fIn\fR یک رشته باینری است. این گزینه تحلیل گریز را فقط روی توابعی اجرا می‌کند که نام آن‌ها به مقادیری هش می‌شود که با پسوند مشخص‌شدهٔ \fIn\fR همخوانی دارند. این کار می‌تواند برای جستجوی دودویی میان توابع جهت کشف باگ‌های تحلیل گریز استفاده شود. .IP \fB\-fgo\-debug\-optimization\fR 4 .IX Item "-fgo-debug-optimization" اطلاعات عیب‌یابی بهینه‌سازی را در خروجی نمایش می‌دهد. .IP \fB\-fgo\-c\-header=\fR\fIfile\fR 4 .IX Item "-fgo-c-header=file" تعاریف ساختار (struct) نام‌گذاری‌شده در سطح بالا در گو را به صورت کد C در پروندهٔ \fIfile\fR می‌نویسد. این گزینه هنگام کامپایل بستهٔ runtime استفاده می‌شود. .IP \fB\-fgo\-compiling\-runtime\fR 4 .IX Item "-fgo-compiling-runtime" قوانین ویژه‌ای را برای کامپایل بستهٔ runtime اعمال می‌کند. تخصیص ضمنی حافظه ممنوع است. همچنین برخی از دستورالعمل‌های اضافی کامپایلر پشتیبانی می‌شوند. .IP \fB\-fgo\-embedcfg=\fR\fIfile\fR 4 .IX Item "-fgo-embedcfg=file" یک فایل JSON را مشخص می‌کند که برای نگاشت الگوهای استفاده‌شده با کامنت‌های ویژهٔ \&\f(CW\*(C`//go:embed\*(C'\fR به فایل‌های تعیین‌شده با الگوها به کار می‌رود. فایل JSON باید دارای دو مؤلفه باشد: \f(CW\*(C`Patterns\*(C'\fR که هر الگو را به فهرستی از نام پرونده‌ها نگاشت می‌کند، و \f(CW\*(C`Files\*(C'\fR که هر نام پرونده را به مسیر کامل آن پرونده نگاشت می‌کند. این گزینه برای استفاده توسط دستور \&\fBgo\fR جهت پیاده‌سازی \f(CW\*(C`//go:embed\*(C'\fR در نظر گرفته شده است. .IP \fB\-fgo\-importcfg=\fR\fIfile\fR 4 .IX Item "-fgo-importcfg=file" فایلی را مشخص می‌کند که نگاشت‌هایی را برای مسیرهای بستهٔ وارداتی موجود در فایل‌های منبع گو فراهم می‌آورد. این فایل می‌تواند شامل دو دستور باشد: \&\f(CW\*(C`importpath\*(C'\fR برای تغییر نام مسیرهای وارداتی جهت تأمین محلی وابستگی‌ها (vendoring) و \&\f(CW\*(C`packagefile\*(C'\fR برای نگاشت از مسیر بسته به فایل‌های حاوی داده‌های صادراتی (export data). این گزینه برای استفاده توسط دستور \fBgo\fR در نظر گرفته شده است. .IP \fB\-g\fR 4 .IX Item "-g" این گزینهٔ استاندارد \fBgcc\fR است. دلیل اشاره به آن در اینجا این است که به‌طور پیش‌فرض \fBgccgo\fR تولید اطلاعات اشکال‌زدایی را معادل با گزینهٔ استاندارد \fB\-g1\fR فعال می‌کند. علت این است که برنامه‌های گو برای در دسترس داشتن اطلاعات ردگیری پشته (backtrace) به اطلاعات اشکال‌زدایی نیاز دارند. یک گزینهٔ صریح \fB\-g0\fR می‌تواند برای غیرفعال کردن تولید اطلاعات اشکال‌زدایی استفاده شود، که در این صورت برخی از توابع کتابخانه استاندارد، مانند \f(CW\*(C`runtime.Callers\*(C'\fR، به درستی عمل نخواهند کرد. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \fBgcc\fR\|(1) و مدخل‌های Info برای \fIgccgo\fR و \fIgcc\fR. .SH "حق نشر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر (c) 2010\-2026 بنیاد نرم‌افزار آزاد (Free Software Foundation, Inc.) .PP اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشرشده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، متون روی جلد (الف) (زیر را ببینید)، و با متون پشت جلد (ب) (زیر را ببینید). نسخه‌ای از این مجوز در صفحه راهنمای \fBgfdl\fR\|(7) گنجانده شده است. .PP (الف) متن روی جلد FSF عبارت است از: .PP .Vb 1 \& A GNU Manual .Ve .PP (ب) متن پشت جلد FSF عبارت است از: .PP .Vb 3 \& You have freedom to copy and modify this GNU Manual, like GNU \& software. Copies published by the Free Software Foundation raise \& funds for GNU development. .Ve