.\" .\" mkbundle manual page. .\" (C) 2004 Ximian, Inc. .\" Author: .\" Miguel de Icaza (miguel@gnu.org) .\" .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .TH Mono "mkbundle" .SH "نام (NAME)" mkbundle, mkbundle2 \- ایجاد یک فایل اجرایی بسته‌بندی‌شده. .SH "خلاصه دستور (SYNOPSIS)" .PP .B mkbundle [options] assembly1 [assembly2 ...] .SH "توضیحات (DESCRIPTION)" دستور \fImkbundle\fP یک برنامه اجرایی تولید می‌کند که حاوی رونوشت‌های ایستای اسمبلی‌های فهرست‌شده در خط فرمان خواهد بود. به‌طور پیش‌فرض تنها اسمبلی‌های مشخص‌شده در خط فرمان در بسته گنجانده می‌شوند. برای گنجاندن خودکار تمام وابستگی‌های ارجاع‌شده، از گزینه خط فرمان «\-\-deps» استفاده کنید. .PP دو حالت عملیاتی وجود دارد؛ یکی از یک باینری موجود Mono یا فهرستی از باینری‌های میزبانی‌شده روی سرور استفاده می‌کند و هنگامی فعال می‌شود که از یکی از گزینه‌های خط فرمان .B \-\-cross، .B \-\-sdk یا .B \-\-runtime استفاده کنید. .PP یک سازوکار قدیمی‌تر، یک استاب (stub) کوچک به زبان C ایجاد می‌کند که برای تولید یک فایل اجرایی خودکفا به کتابخانه libmono پیوند می‌خورد و نیازمند یک کامپایلر C است. این سازوکار در بخش «OLD EMBEDDING» در ادامه شرح داده شده است. .PP برای نمونه، جهت ایجاد یک بسته برای hello world، از دستور زیر استفاده کنید: .nf $ mkbundle -o hello --simple hello.exe .fi .PP می‌توانید گزینه‌هایی را پیکربندی کنید که مستقیماً به زمان اجرای Mono درون فایل اجرایی شما ارسال شوند؛ برای این کار، از پرچم .I \-\-options استفاده کنید. برای نمونه، دستور زیر با ارسال گزینه خط فرمان «-O=-inline» به فایل اجرایی تعبیه‌شده، درون‌ریزی (inlining) را غیرفعال می‌کند: .nf $ mkbundle -o hello --options -O=-inline --simple hello.exe .PP نسخه ساده (simple) امکان کامپایل متقابل (cross-compiling) را فراهم می‌کند؛ این امر مستلزم آن است که یک زمان اجرای Mono در مسیر ~/.mono/targets/TARGET/mono نصب شده و در دسترس باشد. می‌توانید از «\-\-local-targets» برای فهرست کردن تمام مقصدهای موجود، و از آرگومان «\-\-cross» برای تعیین مقصد استفاده کنید، مانند نمونه زیر: .nf $ mkbundle --local-targets Available targets: default - Current System Mono 4.4.0-macosx-x86 4.4.0-debian-8-arm64 $ mkbundle --cross 4.4.0-debian-8-powerpc hello.exe -o hello-debian .fi .PP دستور بالا کتابخانه بومی شما را درون hello-debian برای یک سیستم Debian 8 که روی یک ماشین PowerPC اجرا می‌شود بسته‌بندی خواهد کرد. .PP ما باینری‌های از پیش بسته‌بندی‌شده Mono را برای معماری‌های گوناگون ارائه می‌دهیم که به شما امکان کامپایل متقابل را می‌دهند؛ از .B \-\-list-targets برای دریافت فهرستی از تمام مقصدهای پشتیبانی‌شده، و از پرچم .B \-\-fetch-target برای واکشی مقصدی که آن را نصب ندارید استفاده کنید، مانند نمونه زیر: .nf $ mkbundle --list-targets Cross-compilation targets available: 4.4.0-linux-libc2.13-amd64 4.4.0-linux-libc2.13-armel 4.4.0-linux-libc2.13-armhf 4.4.0-linux-libc2.13-i386 4.4.0-macos-10.7-amd64 4.4.0-macos-10.7-i386 4.4.2-linux-libc2.13-amd64 4.4.2-linux-libc2.13-armel 4.4.2-linux-libc2.13-armhf 4.4.2-linux-libc2.13-i386 4.4.2-macos-10.7-amd64 4.4.2-macos-10.7-i386 $ mkbundle --fetch-target 4.4.2-macos-10.7-i386 .fi .PP و سپس می‌توانید یک فایل باینری تولید کنید که روی Mono ۳۲ بیتی در MacOS اجرا شود: .nf $ mkbundle --cross 4.4.2-macos-10.7-i386 hello.exe -o hello-macos .fi .PP مقصدهای بارگیری‌شده در دایرکتوری .B ~/.mono/targets ذخیره می‌شوند..SH "گزینه‌ها (OPTIONS)" .TP .I "--config FILE" مشخص می‌کند که یک پرونده پیکربندی DLLMAP مربوط به Mono نیز باید بسته‌بندی شود. در حالت‌های ساده و کامپایل متقابل (cross compiler)، اگر هیچ پرونده پیکربندی‌ای مشخص نشود، پرونده مربوط به هدف فعلی انتخاب می‌شود (در حالت ساده، پرونده سیستمی، یا در حالت کامپایل متقابل، پرونده‌ای که از هدف کامپایل متقابل آمده است). .TP .I "--config-dir DIR" در صورت ارسال، مقدار DIR برای متغیر محیطی MONO_CFG_DIR تنظیم خواهد شد. .TP .I "--cross target" از این گزینه برای درخواست از mkbundle جهت تولید یک باینری کامپایل متقابل استفاده کنید. این گزینه یک بسته برای بستر هدف (target platform) مشخص‌شده ایجاد می‌کند. هدف باید دایرکتوری‌ای در ~/.mono/targets/ باشد که شامل یک SDK نصب‌شده (تولید شده توسط ابزار mono-package-runtime) است. می‌توانید با استفاده از --list-targets فهرستی از نسخه‌های از پیش کامپایل‌شده زمان اجرا (runtime) را دریافت کنید و با استفاده از گزینه خط فرمان --fetch-target، یک هدف مشخص را دریافت (fetch) کنید. .Sp این پرچم با .I --sdk که برای تعیین یک مسیر مطلق جهت یافتن زمان اجرای Mono استفاده می‌شود و گزینه --runtime که برای ساخت دستی بسته چندسکویی به کار می‌رود، ناسازگار است (نمی‌توانند همزمان استفاده شوند). .TP .I "--deps" این گزینه تمام اسمبلی‌های ارجاع‌داده‌شده برای اسمبلی‌های فهرست‌شده در خط فرمان را بسته‌بندی می‌کند. این ویژگی برای انتشار یک ایمیج مستقل (self-contained) مفید است. .TP .I "--env KEY=VALUE" از این گزینه برای درج مستقیم (hardcode) یک متغیر محیطی در زمان اجرا استفاده کنید تا KEY به VALUE نگاشت شود. این گزینه در سناریوهایی که می‌خواهید گزینه‌های پیکربندی خاصی از زمان اجرای Mono را که توسط متغیرهای محیطی کنترل می‌شوند فعال کنید، کاربرد دارد. .TP .I "--fetch-target target" یک زمان اجرای از پیش کامپایل‌شده را برای هدف مشخص‌شده از سایت توزیع Mono بارگیری می‌کند. .TP .I "--i18n encoding" مشخص می‌کند که کدام جدول‌های کدگذاری همراه با فایل اجرایی عرضه شوند. به‌طور پیش‌فرض، Mono اسمبلی پشتیبان I18N.dll و اسمبلی I18N.West.dll را به همراه دارد. اگر برنامه شما از System.Text.Encoding.GetEncoding با کدگذاری‌هایی غیر از کدگذاری‌های غربی (West) استفاده می‌کند، باید آن‌ها را در اینجا مشخص کنید. .Sp می‌توانید از پارامتر .B none استفاده کنید تا درخواست کنید هیچ کدگذاری ضمنی، از جمله اسمبلی پشتیبان I18N.dll، بسته‌بندی نشود؛ اگر خودتان یک پیونددهنده (linker) را اجرا کرده‌اید، از این گزینه استفاده کنید. .Sp می‌توانید از پرچم .B all برای بسته‌بندی تمام کدگذاری‌های موجود استفاده کنید. .Sp یا می‌توانید از یک فهرست جدا شده با کاما از کلمات CJK، MidWest، Other، Rare و West برای تعیین اسمبلی‌های کدگذاری مورد نظر جهت توزیع استفاده کنید. .TP .I "-L path" مسیر `path' را به فهرست جستجوی اسمبلی‌ها اضافه می‌کند. قواعد همانند پرچم‌های -lib: یا -L کامپایلر است. .TP .I "--library [LIB,]PATH" پرونده کتابخانه پویا را که با `PATH' مشخص شده در فایل اجرایی بسته‌بندی‌شده تعبیه می‌کند و به صورت اختیاری نام `LIB' را به آن می‌دهد. این گزینه برای ارسال وابستگی‌های کتابخانه‌ای بومی (native) استفاده می‌شود که در زمان راه‌اندازی استخراج شده و توسط زمان اجرا بارگیری می‌شوند. کتابخانه‌های متعدد باید به ترتیب وابستگی مشخص شوند، به‌طوری که موارد بعدی در خط فرمان به موارد قبلی وابسته باشند. .TP .I "--lists-targets" تمام هدف‌های کامپایل متقابل موجود را که به صورت باینری‌های از پیش کامپایل‌شده در سرور توزیع Mono در دسترس هستند فهرست می‌کند. .TP .I "--local-targets" تمام هدف‌های محلی موجود برای کامپایل متقابل را فهرست می‌کند. .TP .I "--cil-strip PATH" یک پیراینده CIL (یا CIL stripper) ارائه می‌دهد که mkbundle در صورت امکان از آن استفاده خواهد کرد. کاربرد در نظر گرفته شده، کمک به کاهش اندازه فایل در AOT است. .TP .I "--in-tree path/to/mono/source/root" یک مخزن سورس Mono در اختیار mkbundle قرار می‌دهد تا هدرهای لازم برای کامپایل را از آن استخراج کند. این به mkbundle اجازه می‌دهد خارج از درخت سورس پروژه اجرا شود، که برای کار با چندین زمان اجرا و آزمایش بدون نیاز به نصب مفید است. .TP .I "--managed-linker PATH" دسترسی mkbundle به یک پیونددهنده مدیریت‌شده (managed linker) را برای پیش‌پردازش اسمبلی‌ها فراهم می‌کند. .TP .I "--machine-config FILE" از FILE داده‌شده به عنوان پرونده machine.config برای برنامه تولیدشده استفاده می‌کند. پیکربندی ماشین حاوی یک پرونده XML است که توسط APIهای System.Configuration برای پیکربندی پشته .NET استفاده می‌شود. معمولاً این مسیر برابر است با .I $prefix/etc/mono/4.5/machine.config. .Sp اگر می‌خواهید این بسته‌بندی خودکار را غیرفعال کنید، می‌توانید از پرچم .I "--no-machine-config" استفاده کنید. در حالت‌های ساده و کامپایل متقابل، اگر هیچ پرونده machine.config مشخص نشود، پرونده مربوط به هدف فعلی انتخاب می‌شود (در حالت ساده، پرونده سیستمی، یا در حالت کامپایل متقابل، پرونده‌ای که از هدف کامپایل متقابل آمده است). .TP .I "--no-config" در حالت ساده یا کامپایل متقابل، این گزینه از بسته‌بندی خودکار پرونده پیکربندی توسط mkbundle جلوگیری می‌کند. .TP .I "--nodeps" این حالت پیش‌فرض است: \fImkbundle\fP فقط اسمبلی‌هایی را که در خط فرمان مشخص شده‌اند شامل می‌شود تا اندازه ایمیج نهایی ایجادشده کاهش یابد. .TP .I "--no-machine-config" در حالت ساده یا کامپایل متقابل، این گزینه از بسته‌بندی خودکار پرونده machine.config توسط mkbundle جلوگیری می‌کند. .TP .I "-o filename" خروجی را در `filename' قرار می‌دهد. اگر پرچم -c مشخص شده باشد، این یک برنامه میزبان C است. در غیر این صورت، حاوی پرونده اجرایی نهایی خواهد بود. .TP .I "--options OPTS" از آنجا که فایل اجرایی حاصل به عنوان یک برنامه مستقل عمل خواهد کرد، می‌توانید از این گزینه برای ارسال گزینه‌های پیکربندی به زمان اجرای Mono و گنجاندن پایدار آن‌ها در فایل اجرایی حاصل استفاده کنید. این گزینه‌ها به عنوان .I OPTS مشخص می‌شوند. .Sp می‌توانید از مورد بالا برای پیکربندی گزینه‌هایی استفاده کنید که معمولاً قبل از اجرای برنامه اصلی، در خط فرمان به Mono ارسال می‌کنید. .Sp علاوه بر این، کاربران باینری شما همچنان می‌توانند با تنظیم متغیر محیطی .I MONO_ENV_OPTIONS گزینه‌های خود را پیکربندی کنند. .TP .I "--sdk SDK_PATH" از این پرچم برای مشخص کردن مسیری استفاده کنید که mkbundle، کیت توسعه نرم‌افزار (SDK) Mono را از آن پیدا کند. مسیر SDK باید مسیر پیشوندی (prefix) باشد که برای پیکربندی نصب Mono استفاده کرده‌اید، و معمولاً شامل پرونده‌هایی مانند .I SDK_PATH/bin/mono ، .I SDK_PATH/lib/mono/4.5 و غیره خواهد بود. .Sp هنگامی که این پرچم مشخص شود، .I mkbundle زمان اجرا، کتابخانه‌های فریم‌ورک، منابع مدیریت‌نشده (unmanaged) و پرونده‌های پیکربندی را از فایل‌های موجود در این دایرکتوری پیدا و بارگیری می‌کند. .Sp این پرچم با .I --cross ناسازگار است (نمی‌تواند همزمان استفاده شود). . .TP .I "--target-server SERVER" به‌طور پیش‌فرض ابزار mkbundle زمان‌های اجرای هدف را از سرور Mono بارگیری می‌کند؛ شما می‌توانید سرور متفاوتی را برای فراهم کردن زمان‌های اجرای کامپایل متقابل مشخص کنید. .TP .I "--mono-api-struct-path FILE" گزینه FILE به پرونده‌ای اشاره می‌کند که شامل تعریف ساختار \fIBundleMonoAPI\fP است؛ ساختاری که دربردارنده اشاره‌گرهای لازم به توابع مختلف Mono API مورد استفاده در سرتاسر کد تولیدشده می‌باشد. این سازوکار برای استفاده توسط اشخاص ثالثی در نظر گرفته شده که زمان اجرای Mono را تعبیه (embed) کرده و آن را به‌صورت پویا به عنوان بخشی از راه‌اندازی برنامه بارگیری و مقداردهی اولیه می‌کنند؛ در این حالت، APIهای Mono برای بارگذار کتابخانه مشترک در دسترس نخواهند بود و بسته ایجادشده کار نخواهد کرد (یک نمونه از این تعبیه‌کننده‌ها Xamarin.Android است). پس از ارائه FILE تعریف، تعبیه‌کننده باید تابع \fIvoid initialize_mono_api (const BundleMonoAPI *info)\fP موجود در کد تولیدشده را .B قبل از فراخوانی \fIvoid mono_mkbundle_init ()\fP اجرا کند. نیازی نیست ساختار ارسال‌شده به \fIinitialize_mono_api\fP به صورت پویا تخصیص داده شود، زیرا محتوای آن به ساختار محلی در کد تولیدشده کپی می‌شود و پس از بازگشت \fIinitialize_mono_api\fP هیچ اشاره‌گری به ساختار ارسال‌شده نگه‌داری یا استفاده نخواهد شد. فهرست اشاره‌گرها در اینجا مستند نشده است. در عوض، لطفاً به پرونده \fIbundle-mono-api.inc\fP موجود در دایرکتوری سورس mkbundle در درخت سورس Mono شما (\fImcs/tools/mkbundle\fP) یا در مخزن گیت‌هاب Mono به نشانی https://github.com/mono/mono/blob/master/mcs/tools/mkbundle/bundle-mono-api.inc مراجعه کنید. لطفاً توجه داشته باشید که ساختار شما باید با ساختار مورد انتظار نسخه زمان اجرای Mono شما مطابقت داشته باشد. همچنین این پرونده باید تابع \fImkbundle_log_error\fP را با امضای زیر تعریف کند:.nf static void mkbundle_log_error (const char *format, ...) {} .fi این تابع باید API گزارش‌گیری (logging) مختص تعبیه‌کننده را پیاده‌سازی کند. .SH "تعبیه قدیمی (OLD EMBEDDING)" .PP سامانهٔ تعبیهٔ قدیمی یک استاب (stub) کوچک C را کامپایل می‌کند که کد C را تعبیه کرده و فایل اجرایی حاصل را با استفاده از کامپایلر سیستم کامپایل می‌نماید. این کار به نصب بودن یک کامپایلر C کارآمد نیاز دارد و تنها برای بسته‌بندی فایل‌های باینری برای میزبان فعلی کار می‌کند. .PP این قابلیت همچنان در دسترس است، اما ما حالت جدید را که ساده‌تر، سریع‌تر و راحت‌تر است توصیه می‌کنیم. .PP برای مثال، جهت ایجاد یک بسته برای hello world، از دستور زیر استفاده کنید: .nf $ mkbundle -o hello hello.exe .fi .PP دستور بالا hello.exe را درون یک برنامهٔ بومی به نام "hello" قرار می‌دهد. توجه داشته باشید که تصویر تولیدشده همچنان حاوی تصویر CIL است و هیچ پیش‌کامپایلی انجام نمی‌شود. .PP علاوه بر این، می‌توان با استفاده از گزینهٔ \-c تعیین کرد که آیا \fImkbundle\fP باید فایل اجرایی حاصل را کامپایل کند یا خیر. این ویژگی زمانی مفید است که بخواهید کتابخانه‌های اضافی را پیوند (link) دهید یا خروجی تولیدشده را با جزئیات بیشتری کنترل نمایید. برای نمونه، این روش می‌تواند برای پیوند ایستا (static) برخی کتابخانه‌ها به کار رود: .nf $ mkbundle -c -o host.c -oo bundles.o --deps hello.exe $ cc host.c bundles.o /usr/lib/libmono.a -lc -lrt .fi .PP شما همچنین می‌توانید از \fImkbundle\fP برای تولید بسته‌ای استفاده کنید که هنگام تعبیه کردن محیط زمان اجرای Mono درون یک برنامهٔ بومی کاربرد دارد. در این حالت، از هر دو گزینهٔ \-c و \-\-nomain استفاده کنید. فایل host.c حاصل دارای تابع main() نخواهد بود. پیش از راه‌اندازی اولیهٔ JIT در کد خود، تابع mono_mkbundle_init() را فراخوانی کنید تا اسمبلی‌های بسته‌بندی‌شده در دسترس محیط زمان اجرای تعبیه‌شده قرار گیرند. .SH "گزینه‌های تعبیه قدیمی (OLD EMBEDDING OPTIONS)" این گزینه‌ها تنها می‌توانند به جای استفاده از گزینه‌های .B \-\-cross, \-\-runtime یا .B \-\-simple استفاده شوند. .TP .I "\-c" تولید فایل استاب (stub)، بدون کامپایل کردن استاب حاصل. .TP .I "\-oo filename" نام فایل شیء (object file) کمکی که حاوی بسته است را مشخص می‌کند. .TP .I "\-\-keeptemp" به‌طور پیش‌فرض، \fImkbundle\fP فایل‌های موقتی را که برای تولید بسته استفاده می‌کند، حذف خواهد کرد. این گزینه این فایل‌ها را نگه می‌دارد. .TP .I "\-\-nomain" همراه با گزینهٔ \-c، استاب میزبان را بدون تابع main() تولید می‌کند. .TP .I "\-\-static" به‌طور پیش‌فرض، \fImkbundle\fP به‌صورت پویا به mono و glib پیوند می‌خورد. این گزینه باعث می‌شود پیوند به جای آن به‌صورت ایستا (static) انجام شود. .TP .I "\-z" اسمبلی‌ها را پیش از تعبیه فشرده می‌کند. این کار حجم فایل‌های اجرایی را کاهش می‌دهد، اما زمان راه‌اندازی را افزایش داده و نیازمند نصب بودن zlib روی سیستم مقصد است. .SH "گزینه‌های AOT (AOT OPTIONS)" این گزینه‌ها از یک mkbundle با استفاده از کامپایل AOT به همراه پیوند ایستا پشتیبانی می‌کنند. به یک زنجیره ابزار کامپایلر بومی (native compiler toolchain) نیاز است. .TP .I "\-\-aot-runtime PATH" مسیر زمان اجرای mono را برای کامپایل AOT اسمبلی‌ها مشخص می‌کند. .TP .I "\-\-aot-dedup" (آزمایشی) حذف متدهای تکراری کامپایل‌شده با AOT بر اساس مَنگلینگ (تغییر نام) یکتای نام متدها. .TP .I "\-\-aot-mode MODE" در حال حاضر MODE می‌تواند "full" یا "llvmonly" باشد. اکنون mkbundle از سه حالت AOT پشتیبانی می‌کند. حالت پیش‌فرض (تنظیم نشدن این گزینه) متدها را به روش AOT کامپایل می‌کند، اما در مواردی که بسیار سریع‌تر باشد یا سازگاری کامل‌تری را ارائه دهد، به تولید کد در زمان اجرا (runtime codegen) بازمی‌گردد. مقدار "full" استاب‌های لازم را ایجاد می‌کند تا نیازی به تولید کد در زمان اجرا نباشد. مقدار "llvmonly" همان کار را انجام می‌دهد، اما تمام تولید کدها را وادار می‌کند تا از طریق بک‌اند llvm انجام شوند..SH "ویندوز (WINDOWS)" اگر از تعبیه‌سازی قدیمی در سیستم‌های Windows استفاده می‌کنید، امکان استفاده از یک زنجیره ابزار شبه‌یونیکس مانند cygwin و نصب بسته‌های gcc و gcc-mingw یا استفاده از زنجیره ابزار VC مربوط به Visual Studio 2015/2017 به همراه Clang برای Visual Studio به عنوان اسمبلر وجود دارد. Clang را می‌توان به عنوان یک مؤلفه جداگانه با نام \(lqClang/C2\(rq و با استفاده از نصاب Visual Studio نصب کرد. .PP در صورت استفاده از زنجیره ابزار Visual Studio، ابزار mkbundle به‌طور پیش‌فرض از آخرین نسخه کامپایلر و پیونددهنده نصب‌شده Visual Studio و همچنین Windows SDK استفاده خواهد کرد. در صورت اجرا از یکی از خط‌فرمان‌های توسعه‌دهنده Visual Studio، ابزار mkbundle اطلاعات را مستقیماً از آن محیط ساخت دریافت خواهد کرد. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .TP .I "AS" دستور اسمبلر. پیش‌فرض \(lqas\(rq است. برای Visual Studio، مقدار پیش‌فرض \(lqclang.exe\(rq است. اگر \(lqclang.exe\(rq برای Visual Studio نصب نشده باشد، mkbundle به استفاده از \(lqas\(rq بازمی‌گردد. .TP .I "CC" دستور کامپایلر C. مقدار پیش‌فرض برای Linux برابر \(lqcc\(rq، برای cygwin برابر \(lqgcc\(rq و برای Visual Studio برابر \(lqcl.exe\(rq است. .TP .I "MONO_BUNDLED_OPTIONS" گزینه‌هایی که باید به زمان اجرای بسته‌بندی‌شده Mono ارسال شوند و با فاصله از یکدیگر جدا می‌شوند. به صفحه راهنمای mono(1) مراجعه کنید یا دستور mono --help را اجرا نمایید. .SH "متغیرهای محیطی ویژوال استودیو ویندوز (WINDOWS VISUAL STUDIO ENVIRONMENT VARIABLES)" .TP .I "VisualStudioVersion" نسخه Visual Studio مورد استفاده در ساخت mkbundle. پیش‌فرض، آخرین نسخه نصب‌شده Visual Studio است. مقادیر مجاز، \(lq14.0\(rq برای Visual Studio 2015 یا \(lq15.0\(rq برای Visual Studio 2017. .TP .I "WindowsSdkVersion" نسخه Windows SDK مورد استفاده در ساخت mkbundle. پیش‌فرض/ناشناخته، آخرین نسخه نصب‌شده Windows SDK است. مقادیر: \(lq8.1\(rq، \(lq10.0.10240.0\(rq، \(lq10.0.15063.0\(rq و غیره. .TP .I "VSCMD_ARG_TGT_ARCH" معماری هدف خروجی مورد استفاده در ساخت mkbundle. پیش‌فرض/ناشناخته، استفاده از معماری زمان اجرای .NET که mkbundle را اجرا می‌کند. مقادیر مجاز، \(lqx86\(rq یا \(lqx64\(rq. نکته: هنگام اجرا از یک خط فرمان Visual Studio، این متغیر باید از قبل توسط خط فرمان تنظیم شده باشد و با بقیه بخش‌های آن محیط ساخت همخوانی داشته باشد. .TP .I "INCLUDE" بازنویسی تمام مسیرهای سفارشی include ارسال‌شده به \(lqcl.exe\(rq. توسط خط فرمان توسعه‌دهنده Visual Studio از پیش تعریف می‌شود یا در صورت تعریف‌نشده بودن به‌طور خودکار توسط mkbundle شناسایی می‌شود. .TP .I "LIB" بازنویسی تمام مسیرهای سفارشی کتابخانه ارسال‌شده به \(lqlink.exe\(rq. توسط خط فرمان توسعه‌دهنده Visual Studio از پیش تعریف می‌شود یا در صورت تعریف‌نشده بودن به‌طور خودکار توسط mkbundle شناسایی می‌شود. .TP .I "MONOPREFIX" استفاده از یک ریشه نصب سفارشی Mono SDK متناسب با معماری هدف خروجی (x86/x64). پیش‌فرض، mkbundle به دنبال Mono SDK‌های نصب‌شده متناسب با معماری هدف خواهد گشت. .TP .I "MONOLIB" استفاده از نامی دیگر برای کتابخانه mono یا یک مسیر مطلق به کتابخانه mono ارسال‌شده به پیونددهنده. پیش‌فرض، mkbundle بسته به سناریوی استفاده پویا/ایستا، از نام پیش‌فرض کتابخانه mono استفاده خواهد کرد. نکته: کتابخانه mono ارائه‌شده باید با سناریوی استفاده پویا/ایستای mkbundle و معماری هدف مطابقت داشته باشد. .TP .I "VCCRT" بازنویسی تنظیمات پیونددهنده برای کتابخانه زمان اجرای C (CRT). پیش‌فرض \(lqMD\(rq است و mkbundle در ویندوز از پیونددهی پویای زمان اجرای C سازگار با توزیع Mono SDK استفاده خواهد کرد. اگر از یک زمان اجرای سفارشی ساخته‌شده Mono با پیونددهی ایستای C-Runtime استفاده می‌شود، تنظیم این متغیر روی \(lqMT\(rq پیونددهی را با استفاده از کتابخانه‌های ایستای C-runtime انجام می‌دهد. .TP .I "VCSUBSYSTEM" بازنویسی زیرسیستم ویندوز. پیش‌فرض، \(lqwindows\(rq است. اگر زیرسیستم کنسول ترجیح داده می‌شود، از \(lqconsole\(rq استفاده کنید. نکته: اگر از فرایند هدف خروجی انتظار چاپ در کنسول وجود دارد، این متغیر را روی \(lqconsole\(rq تنظیم نمایید. .SH "فایل‌ها (FILES)" این برنامه اسمبلی‌های ارجاع‌داده‌شده را از حافظه نهان اسمبلی‌های Mono بارگذاری خواهد کرد. .PP هدف‌ها از مسیر ~/.mono/targets/TARGETNAME/mono بارگذاری می‌شوند. .SH "گزارش باگ‌ها (BUGS)" .SH "فهرست‌های پستی (MAILING LISTS)" برای جزئیات بیشتر به http://lists.ximian.com/mailman/listinfo/mono-devel-list مراجعه کنید. .SH "وب‌گاه (WEB SITE)" برای جزئیات به http://www.mono-project.com مراجعه نمایید. .SH "همچنین ببینید (SEE ALSO)" .BR mcs(1), mono(1), mono-config(5).