.\" Man page generated from reStructuredText. . .TH "SHMEMCC" "1" "Feb 23, 2026" "" "Open MPI" . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH "نام (NAME)" shmemcc \- کامپایلر پوششی OpenSHMEM برای زبان C .SH "سینتکس (SYNTAX)" .sp \fBoshcc [\-\-showme | \-\-showme:compile | \-\-showme:link] ...\fP .sp \fBoshcxx [\-\-showme | \-\-showme:compile | \-\-showme:link] ...\fP .sp \fBoshc++ [\-\-showme | \-\-showme:compile | \-\-showme:link] ...\fP .sp \fBoshfort [\-\-showme | \-\-showme:compile | \-\-showme:link] ...\fP .sp \fBshmemcc [\-\-showme | \-\-showme:compile | \-\-showme:link] ...\fP .sp \fBshmemcxx [\-\-showme | \-\-showme:compile | \-\-showme:link] ...\fP .sp \fBshmemc++ [\-\-showme | \-\-showme:compile | \-\-showme:link] ...\fP .sp \fBshmemfort [\-\-showme | \-\-showme:compile | \-\-showme:link] ...\fP .SH "گزینه‌ها (OPTIONS)" .sp گزینه‌های زیر برای همهٔ کامپایلرهای پوششی اعمال می‌شوند: .INDENT 0.0 .IP \(bu 2 \fB\-\-showme\fP: این گزینه در چندین شکل مختلف در دسترس است (پایین را ببینید). هیچ‌یک از شکل‌ها کامپایلر زیرین را فراخوانی نمی‌کنند؛ همهٔ آن‌ها اطلاعاتی دربارهٔ چگونگی فراخوانی کامپایلر زیرین در صورتی که از \fB\-\-showme\fP استفاده نمی‌شد ارائه می‌دهند. گزینهٔ پایهٔ \fB\-\-showme\fP خط فرمانی را که برای کامپایل برنامه اجرا می‌شد در خروجی نمایش می‌دهد. .sp \fBنکته:\fP .INDENT 2.0 .INDENT 3.5 اگر آرگومانی غیر از نام فایل در خط فرمان ارسال شود، گزینهٔ \fB\-\-showme\fP هیچ پرچم اضافی را نمایش \fIنخواهد داد\fP. برای نمونه، هر دو دستور \fB"shmemcc \-\-showme\fP و \fBshmemcc \-\-showme my_source.c\fP تمام پرچم‌های ارائه‌شده توسط پوشش را نشان خواهند داد. اما دستور \fBshmemcc \-\-showme \-v\fP فقط نام کامپایلر زیرین و \fB\-v\fP را نمایش خواهد داد\&. .UNINDENT .UNINDENT .IP \(bu 2 \fB\-\-showme:compile\fP: پرچم‌های کامپایلری را که به کامپایلر زیرین ارائه می‌شدند در خروجی نمایش می‌دهد. .IP \(bu 2 \fB\-\-showme:link\fP: پرچم‌های پیونددهنده‌ای را که به کامپایلر زیرین ارائه می‌شدند در خروجی نمایش می‌دهد. .IP \(bu 2 \fB\-\-showme:command\fP: فرمان کامپایلر زیرین را (که ممکن است شامل یک یا چند نشانه باشد) در خروجی نمایش می‌دهد. .IP \(bu 2 \fB\-\-showme:incdirs\fP: فهرستی جداشده با فاصله (اما در غیر این صورت ساده و بدون قالب‌بندی اضافی) از پوشه‌هایی که کامپایلر پوششی برای مشخص کردن محل فایل‌های سرایند مربوطه به کامپایلر زیرین ارائه می‌داد را در خروجی نمایش می‌دهد. .IP \(bu 2 \fB\-\-showme:libdirs\fP: فهرستی جداشده با فاصله (اما در غیر این صورت ساده و بدون قالب‌بندی اضافی) از پوشه‌هایی که کامپایلر پوششی برای مشخص کردن محل کتابخانه‌های مربوطه به پیونددهندهٔ زیرین ارائه می‌داد را در خروجی نمایش می‌دهد. .IP \(bu 2 \fB\-\-showme:libs\fP فهرستی جداشده با فاصله (اما در غیر این صورت ساده و بدون قالب‌بندی اضافی) از نام کتابخانه‌هایی که کامپایلر پوششی برای پیوند دادن یک برنامه به کار می‌برد را در خروجی نمایش می‌دهد. برای نمونه: \fBmpi open\-pal util\fP\&. .IP \(bu 2 \fB\-\-showme:version\fP: شمارهٔ نسخهٔ Open MPI را در خروجی نمایش می‌دهد. .IP \(bu 2 \fB\-\-showme:help\fP: یک پیام راهنمای خلاصه از نحوهٔ استفاده را در خروجی نمایش می‌دهد. .UNINDENT .sp برای سایر گزینه‌هایی که می‌توانند از طریق shmemcc و oshcc ارسال شوند، به صفحهٔ راهنمای کامپایلر زیرین خود مراجعه کنید. .SH "توضیحات (DESCRIPTION)" .sp از نظر مفهومی، نقش این دستورها کاملاً ساده است: افزودن شفاف پرچم‌های مرتبط کامپایلر و پیونددهنده به خط فرمان کاربر که برای کامپایل / پیوند برنامه‌های OpenSHMEM ضروری هستند، و سپس فراخوانی کامپایلر زیرین برای اجرای واقعی فرمان. .sp به همین دلیل، از این دستورها مکرراً با عنوان کامپایلرهای «پوششی» (wrapper) یاد می‌شود زیرا خود آن‌ها برنامه‌ها را کامپایل یا پیوند نمی‌زنند؛ آن‌ها صرفاً پرچم‌های خط فرمان را افزوده و کامپایلر پشتی (back\-end) را فراخوانی می‌کنند. .SH "پیش‌زمینه (BACKGROUND)" .sp پروژهٔ Open MPI کامپایلرهای پوششی را برای چندین زبان ارائه می‌دهد: .INDENT 0.0 .IP \(bu 2 \fBoshcc\fP، \fBshmemcc\fP: زبان C .IP \(bu 2 \fBoshc++\fP، \fBoshcxx\fP، \fBshmemc++\fP، \fBshmemcxx\fP: زبان C++ .IP \(bu 2 \fBoshfort\fP، \fBshmemfort\fP: زبان Fortran .UNINDENT .sp کامپایلرهای پوششی برای هر یک از زبان‌ها یکسان هستند؛ می‌توان از آن‌ها به‌جای یکدیگر استفاده کرد. نام‌های مختلف صرفاً جهت سازگاری رو به عقب ارائه شده‌اند. .SH "نکات فورترن (FORTRAN NOTES)" .sp کامپایلر پوششی Fortran برای OpenSHMEM (\fBoshfort\fP و \fBshmemfort\fP) می‌تواند برنامه‌های OpenSHMEM را که از هرکدام/همهٔ انقیادهای (bindings) فورترن OpenSHMEM استفاده می‌کنند، کامپایل و پیوند کند. .sp با این حال، توجه داشته باشید که کامپایلر Fortran ممکن است به گزینه‌های خط فرمان اضافی برای اعمال یک گویش خاص از Fortran نیاز داشته باشد. برای نمونه، در برخی از نسخه‌های کامپایلر IBM XLF، اگر \fBxlf90\fP کامپایلر زیرین Fortran باشد، ممکن است برای کامپایل فایل‌های منبع Fortran با قالب ثابت (fixed\-format)، گزینهٔ \fB\-qfixed\fP ضروری باشد. .sp در نهایت، دقت داشته باشید که اگر پشتیبانی از Fortran در لایهٔ OpenSHMEM ساخته نشده باشد، \fBoshfort\fP غیرفعال خواهد بود و در صورت استفاده خطا بازمی‌گرداند. .SH "نمای کلی (OVERVIEW)" .sp دستورهای \fBoshcc\fP و \fBshmemcc\fP پوشش‌های تسهیل‌کننده برای کامپایلر زیرین C هستند. ترجمهٔ یک برنامهٔ OpenSHMEM نیازمند پیوند دادن کتابخانه‌های ویژهٔ OpenSHMEM است که ممکن است در یکی از پوشه‌های استاندارد جستجوی \fBld(1)\fP قرار نداشته باشند\&. این امر همچنین اغلب مستلزم گنجاندن فایل‌های سرایندی است که ممکن است در یک مکان استاندارد یافت نشوند. .sp دستورهای \fBoshcc\fP و \fBshmemcc\fP آرگومان‌های خود را همراه با گزینه‌های \fB\-I\fP، \fB\-L\fP و \fB\-l\fP که برای برنامه‌های OpenSHMEM الزامی هستند، به کامپایلر زیرین C منتقل می‌کنند. .sp این موضوع برای تمام کامپایلرهای پوششی سایر زبان‌ها نیز صدق می‌کند. .sp تیم OpenSHMEM \fIاکیداً\fP توصیه می‌کند که به جای تلاش برای پیوند دستی به کتابخانه‌های OpenSHMEM، از کامپایلرهای پوششی استفاده کنید. این رویکرد به پیاده‌سازی خاص OpenSHMEM اجازه می‌دهد تا بدون تحمیل تغییرات به دستورالعمل‌های پیونددهنده در Makefile کاربران تغییر کند. در واقع، مجموعهٔ خاص پرچم‌ها و کتابخانه‌های مورد استفاده توسط کامپایلرهای پوششی به نحوهٔ پیکربندی و ساخت OpenSHMEM بستگی دارد؛ این مقادیر می‌توانند بین نصب‌های مختلف از یک نسخه از OpenSHMEM تغییر کنند. .sp در واقع، از آنجا که این پوشش‌ها صرفاً پوسته‌های نازکی بر فراز یک کامپایلر زیرین هستند، دلایل قانع‌کنندهٔ بسیار بسیار کمی برای \fIعدم\fP استفاده از \fBshmemcc\fP و \fBoshcc\fP وجود دارد. هنگامی که استفادهٔ مستقیم از پوشش‌ها امکان‌پذیر نیست، باید از گزینه‌های \fB\-\-showme:compile\fP و \fB\-\-showme:link\fP برای تعیین اینکه پوشش‌ها از چه پرچم‌هایی استفاده می‌کردند، بهره گرفت. برای نمونه: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C shell$ cc \-c file1.c \(gashmemcc \-\-showme:compile\(ga shell$ cc \-c file2.c \(gashmemcc \-\-showme:compile\(ga shell$ cc file1.o file2.o \(gashmemcc \-\-showme:link\(ga \-o my_oshmem_program .ft P .fi .UNINDENT .UNINDENT .SH "نکات (NOTES)" .sp امکان دارد که کامپایلرهای پوششی با قابلیت آگاهی از چندکتابخانه‌ای (multi\-lib) پیکربندی شوند. بدین معنا که کتابخانه‌ها و فایل‌های سرایند گنجانده‌شده ممکن است بر اساس پرچم‌های تعیین‌شده برای کامپایلر متفاوت باشند (برای نمونه، با کامپایلرهای GNU در لینوکس، در صورت مشاهدهٔ \fB\-m32\fP در مقایسه با مشاهدهٔ \fB\-m64\fP ممکن است مسیر متفاوتی برای کتابخانه‌ها استفاده شود). این رفتار پیش‌فرض در ساخت استاندارد نیست، اما می‌تواند فعال شود (برای نمونه، در یک بستهٔ باینری که پشتیبانی از هر دو حالت ۳۲ و ۶۴ بیتی را ارائه می‌دهد). \fI\%اطلاعات بیشتر را می‌توانید در مستندات پروژه بیابید\fP\&. .SH "فایل‌ها (FILES)" .sp رشته‌هایی که کامپایلرهای پوششی پیش از فراخوانی کامپایلر زیرین در خط فرمان درج می‌کنند، در یک فایل متنی ذخیره شده‌اند که توسط OpenSHMEM ایجاد و در \fB$pkgdata/NAME\-wrapper\-data.txt\fP نصب می‌شود، که در آن: .INDENT 0.0 .IP \(bu 2 \fB$pkgdata\fP معمولاً \fB$prefix/share/openmpi\fP است .IP \(bu 2 \fB$prefix\fP دایرکتوری اصلی و سطح بالای نصب OpenSHMEM است .IP \(bu 2 \fBNAME\fP نام کامپایلر پوششی است (برای نمونه، \fB$pkgdata/shmemcc\-wrapper\-data.txt\fP) .UNINDENT .sp به‌ندرت ویرایش این فایل‌ها ضرورت پیدا می‌کند، اما می‌توان آن‌ها را بررسی کرد تا مشخص شود چه پرچم‌هایی توسط پوشش‌ها در خط فرمان قرار داده می‌شوند. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .sp به‌طور پیش‌فرض، پوشش‌ها از کامپایلرهایی استفاده می‌کنند که هنگام پیکربندی OpenSHMEM انتخاب شده بودند. این کامپایلرها یا به‌طور خودکار توسط اسکریپت «configure» مربوط به Open MPI پیدا شده بودند، یا پیش از فراخوانی \fBconfigure\fP توسط کاربر در متغیرهای محیطی \fBCC\fP، \fBCXX\fP و/یا \fBFC\fP تعیین گردیده بودند. علاوه بر این، آرگومان‌های دیگری مختص کامپایلر ممکن است توسط configure انتخاب شده باشند. .sp این مقادیر را می‌توان با ویرایش فایل‌های متنی حاوی اطلاعات این پیکربندی (بخش \fI\%فایل‌ها (FILES)\fP را ببینید) یا با تعیین متغیرهای محیطی انتخابی به صورت \fBoshmem_value\fP، به‌صورت گزینشی بازنویسی کرد. .sp نام‌های معتبر مقادیر عبارتند از: .INDENT 0.0 .IP \(bu 2 \fBCPPFLAGS\fP: پرچم‌های افزوده‌شده هنگام فراخوانی پیش‌پردازنده (C یا C++) .IP \(bu 2 \fBLDFLAGS\fP: پرچم‌های افزوده‌شده هنگام فراخوانی پیونددهنده (C، C++ یا Fortran) .IP \(bu 2 \fBLIBS\fP: کتابخانه‌های افزوده‌شده هنگام فراخوانی پیونددهنده (C، C++ یا Fortran) .IP \(bu 2 \fBCC\fP: کامپایلر C .IP \(bu 2 \fBCFLAGS\fP: پرچم‌های کامپایلر C .IP \(bu 2 \fBCXX\fP: کامپایلر C++ .IP \(bu 2 \fBCXXFLAGS\fP: پرچم‌های کامپایلر C++ .IP \(bu 2 \fBFC\fP: کامپایلر Fortran .IP \(bu 2 \fBFCFLAGS\fP: پرچم‌های کامپایلر Fortran .UNINDENT .SH "حق نشر (COPYRIGHT)" 2003-2026, The Open MPI Community .\" Generated by docutils manpage writer. .