.\" Man page generated from reStructuredText. . .TH "OSHMEM-WRAPPER-COMPILER" "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)" oshmem-wrapper-compiler \- کامپایلرهای واسط OpenSHMEM (شامل oshcc، oshcxx، oshc++، oshfort، shmemcc، shmemcxx، shmemc++، shmemfort) .SH "خلاصه دستور (SYNOPSIS)" .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 هیچ فلگ اضافی نمایش نخواهد داد. برای مثال، هر دو دستور \fBoshcc \-\-showme\fP و \fBoshcc \-\-showme my_source.c\fP تمامی فلگ‌های ارائه‌شده توسط واسط را نمایش می‌دهند؛ اما \fBoshcc \-\-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 برای سایر گزینه‌هایی که می‌توان از طریق oshcc ارسال کرد، صفحه راهنمای کامپایلر زیرین خود را ببینید. .SH "توضیحات (DESCRIPTION)" .sp از نظر مفهومی، نقش این دستورات بسیار ساده است: افزودن شفاف فلگ‌های مربوطه کامپایلر و پیونددهنده (linker) به خط فرمان کاربر که برای کامپایل / پیوند برنامه‌های OpenSHMEM ضروری هستند، و سپس فراخوانی کامپایلر زیرین برای اجرای واقعی فرمان. .sp به همین دلیل، این دستورات مکرراً به عنوان کامپایلرهای «واسط» (wrapper) شناخته می‌شوند؛ زیرا آن‌ها خودشان مستقیماً برنامه‌ها را کامپایل یا پیوند نمی‌کنند، بلکه تنها فلگ‌های خط فرمان را افزوده و کامپایلر بک‌اند را فراخوانی می‌نمایند. .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 کامپایلرهای واسط برای هر یک از زبان‌ها یکسان هستند؛ آن‌ها می‌توانند به جای یکدیگر استفاده شوند. نام‌های مختلف صرفاً جهت سازگاری با نسخه‌های پیشین (backwards compatibility) ارائه شده‌اند. .SH "نکات فرترن (FORTRAN NOTES)" .sp کامپایلر واسط فرترن برای OpenSHMEM (\fBoshfort\fP و \fBshmemfort\fP) می‌تواند برنامه‌های OpenSHMEM را که از هر کدام/همه بایندرهای Fortran در OpenSHMEM استفاده می‌کنند، کامپایل و پیوند کند. .sp با این حال توجه داشته باشید که ممکن است کامپایلر فرترن برای اعمال گویش (dialect) خاصی از Fortran به گزینه‌های خط فرمان اضافی نیاز داشته باشد. برای مثال، در برخی نسخه‌های کامپایلر IBM XLF، اگر \fBxlf90\fP کامپایلر فرترن زیرین باشد، ممکن است برای کامپایل فایل‌های منبع فرترن با قالب ثابت، گزینه \fB\-qfixed\fP لازم باشد. .sp در نهایت توجه داشته باشید اگر پشتیبانی از Fortran در لایه OpenSHMEM ساخته نشده باشد، \fBoshfort\fP غیرفعال خواهد بود و در صورت استفاده خطا بازمی‌گرداند. .SH "نمای کلی (OVERVIEW)" .sp دستورات \fBoshcc\fP و \fBshmemcc\fP واسط‌های مفیدی برای کامپایلر زیرین C هستند. ترجمه و ساخت یک برنامه OpenSHMEM نیازمند پیوند دادن به کتابخانه‌های خاص OpenSHMEM است که ممکن است در یکی از دایرکتوری‌های جستجوی استاندارد \fBld(1)\fP قرار نداشته باشند. همچنین اغلب به گنجاندن فایل‌های سرایند (header) نیاز دارد که ممکن است در یک مسیر استاندارد یافت نشوند. .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 استفاده از \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 aware) کرد. بدین معنا که کتابخانه‌ها و فایل‌های هدر مشخص‌شده ممکن است بر اساس فلگ‌های کامپایلر تعیین‌شده متفاوت باشند (برای مثال، با کامپایلرهای 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 انتخاب شده‌اند. علاوه بر این، آرگومان‌های خاص دیگری برای کامپایلر ممکن است توسط اسکریپت پیکربندی انتخاب شده باشند. .sp این مقادیر را می‌توان با ویرایش فایل‌های متنی حاوی اطلاعات پیکربندی (بخش \fI\%فایل‌ها (FILES)\fP را ببینید)، یا با تنظیم متغیرهای محیطی خاص به شکل \fBoshmem_value\fP به صورت گزینشی بازنویسی (override) کرد. .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. .