انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

emcc - آنلاین در ابر

emcc را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور emcc است که می تواند در ارائه دهنده میزبانی رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


emcc - جلوی کامپایلر Emscripten

شرح


فایل emcc [گزینه ها]...

پل طبیعی gcc/g++ گزینه های اراده کار ، برای مثال:
--کمک نمایش این اطلاعات

- نسخه
نمایش اطلاعات نسخه کامپایلر

گزینه که هستند اصلاح شده or جدید in emcc عبارتند از:
-O0 بدون بهینه سازی (پیش فرض)

-O1 بهینه سازی های ساده، از جمله asm.js، LLVM -O1 بهینه سازی و بدون زمان اجرا
ادعاها یا C++ catching (برای فعال کردن مجدد C++ catching استثناء، استفاده کنید -s
DISABLE_EXCEPTION_CATCHING=0). (برای جزئیات بیشتر در مورد تأثیرات گزینه های مختلف
سطوح، به application_opt_level() در tools/shared.py و همچنین src/settings.js مراجعه کنید.) توجه:
بهینه‌سازی‌ها فقط هنگام کامپایل کردن به جاوا اسکریپت انجام می‌شوند، نه به صورت متوسط
بیت کد، *مگر اینکه* با EMCC_OPTIMIZE_NORMALLY=1 بسازید (توصیه نمی شود مگر اینکه
می دانی چیکار داری میکنی!)

-O2 As -O1، به علاوه relooper (تفریح ​​حلقه)، LLVM -O2 بهینه سازی و

-s ALIASING_FUNCTION_POINTERS=1

-O3 As -O2، به علاوه بهینه سازی های خطرناک که ممکن است کد تولید شده را بشکند! این اضافه می کند

-s FORCE_ALIGNED_MEMORY=1 -s DOUBLE_MODE=0 -s PRECISE_I64_MATH=0 --بسته 1
--llvm-lto 1

این به هیچ وجه توصیه نمی شود. ایده بهتر این است که هر کدام از اینها را جداگانه امتحان کنید
بالای -O2 تا ببینیم چه کار می کند ویکی و src/settings.js (برای -s گزینه ها)
برای اطلاعات بیشتر.

-s OPTION=VALUE
گزینه تولید کد جاوا اسکریپت به کامپایلر emscripten منتقل می شود. برای
گزینه های موجود، به src/settings.js مراجعه کنید توجه داشته باشید که برای گزینه هایی که لیست هستند، شما
برای مثال در اکثر پوسته ها به علامت نقل قول نیاز دارید

-s RUNTIME_LINKED_LIBS="['liblib.so']"

or

-s "RUNTIME_LINKED_LIBS=['liblib.so']"

(بدون "های خارجی" در هر یک از آنها، با خطا مواجه خواهید شد)

همچنین می توانید فایلی را مشخص کنید که مقدار از آن خوانده شود، به عنوان مثال،

-s DEAD_FUNCTIONS=@/path/to/file

محتویات /path/to/file خوانده می شود، JSON.تجزیه می شود و به DEAD_FUNCTIONS تنظیم می شود
(بنابراین فایل می تواند حاوی

["_func1"، "func2"]

). توجه داشته باشید که مسیر باید مطلق باشد نه نسبی.

-g از اطلاعات اشکال زدایی استفاده کنید توجه داشته باشید که در آخرین مرحله کامپایل از به این نیاز دارید
بیت کد را در جاوا اسکریپت قرار دهید، در غیر این صورت آن را به طور پیش فرض حذف خواهیم کرد -O1 و بالاتر. که در
-O0، شماره خطوط در کد تولید شده نشان داده می شود. که در -O1 و بالاتر،
بهینه ساز آن نظرات را حذف می کند. با این حال این پرچم دارای اثر است
غیرفعال کردن هر چیزی که باعث انحراف یا کوچک سازی نام می شود (بستن یا
ثبت نام پاس).

---تایپ آرایه
0: بدون آرایه تایپ شده 1: آرایه های تایپ شده موازی 2: آرایه های تایپ شده مشترک (مانند C)
(به طور پیش فرض)

--llvm-opts
0: بدون بهینه سازی LLVM (پیش فرض در -O0) 1: -O1 بهینه سازی LLVM (پیش فرض در
-O1) 2: -O2 بهینه سازی LLVM 3: -O3 بهینه سازی LLVM (پیش فرض در -O2+)

--llvm-lto
0: بدون LLVM LTO (پیش فرض در -O2 و زیر) 1: LLVM LTO (پیش فرض در -O3) توجه: اگر
بهینه سازی های LLVM اجرا نمی شوند (نگاه کنید به --llvm-opts، تنظیم این روی 1 تاثیری ندارد.

--بسته
0: بدون کامپایلر بسته (پیش فرض در -O2 و زیر) 1: کامپایلر بسته را اجرا کنید. این
اندازه کد را تا حد زیادی کاهش می دهد و ممکن است در برخی موارد سرعت زمان اجرا را افزایش دهد (اگرچه
برعکس آن نیز ممکن است رخ دهد). توجه داشته باشید که اجرای آن زمان می برد و ممکن است به مقداری نیاز داشته باشد
تغییر در کد این به طور پیش فرض در اجرا می شود -O3.

در حالت asm.js، بسته شدن فقط روی کد پوسته اطراف کامپایل استفاده می شود.
کد (کد کامپایل شده توسط کوچک کننده asm.js سفارشی پردازش می شود).

توجه: اگر کامپایلر بسته به حافظه‌ای خارج از حافظه رسید، سعی کنید JAVA_HEAP_SIZE را در این قسمت تنظیم کنید.
محیط (مثلاً به 4096 متر برای 4 گیگابایت).

--js-transform
قبل از بهینه سازی، روی کد تولید شده فراخوانی می شود. این به شما اجازه می دهد
جاوا اسکریپت را تغییر دهید، به عنوان مثال، کدی را اضافه کنید یا کدی را حذف کنید
که این تغییرات همراه با کد تولید شده بهینه می شوند
به درستی. با نام فایل کد تولید شده به صورت a فراخوانی می شود
پارامتر؛ برای تغییر کد، می توانید داده های اصلی را بخوانید و سپس به آن اضافه کنید
یا آن را با داده های اصلاح شده بازنویسی کنید. به عنوان فضای جدا شده تفسیر می شود
لیستی از آرگومان ها، به عنوان مثال، از "python processor.py" باعث ایجاد پایتون می شود
اسکریپت اجرا شود

--pre-js
فایلی که محتویات آن قبل از کد تولید شده اضافه شده است. این کار *قبل از* انجام می شود
بهینه سازی، بنابراین اگر کامپایلر بسته اجرا شود، به درستی کوچک می شود.

--post-js
فایلی که محتویات آن پس از کد تولید شده اضافه می شود این کار *قبل از* انجام می شود
بهینه سازی، بنابراین اگر کامپایلر بسته اجرا شود، به درستی کوچک می شود.

- embed-file
فایلی برای جاسازی در جاوا اسکریپت تولید شده. کد کامپایل شده قادر خواهد بود
به فایل موجود در فهرست فعلی با همان نامی که در اینجا داده شده است دسترسی پیدا کنید. بنابراین اگر
شما انجام می دهید - embed-file dir/file.dat، سپس (1) dir/file.dat باید نسبت به وجود داشته باشد
جایی که emcc را اجرا می کنید، و (2) کد کامپایل شده شما قادر خواهد بود فایل را توسط
خواندن همان مسیر، dir/file.dat. اگر دایرکتوری به اینجا ارسال شود، کل آن است
مطالب تعبیه خواهد شد.

--پیش بارگذاری-فایل
فایلی برای پیش بارگذاری قبل از اجرای کد کامپایل شده به صورت ناهمزمان. در غیر این صورت
مشابه - embed-file، با این تفاوت که این گزینه فقط هنگام ایجاد مربوط است
HTML (از XHR های باینری ناهمزمان استفاده می کند)، یا JS که در یک صفحه وب استفاده می شود. اگر
یک دایرکتوری در اینجا ارسال می شود، کل محتوای آن از قبل بارگذاری می شود. فایل های از پیش بارگذاری شده
در filename.data ذخیره می شوند، جایی که filename.html فایل اصلی است که شما در حال کامپایل کردن آن هستید
به. برای اجرای کد خود به هر دو html و داده نیاز دارید.

emcc tools/file_packager.py را اجرا می کند تا بسته بندی واقعی تعبیه شده و
فایل های از پیش بارگذاری شده در صورت تمایل می‌توانید بسته‌کننده فایل را خودتان اجرا کنید، به اسناد مراجعه کنید
داخل اون فایل سپس باید خروجی بسته‌کننده فایل را در emcc قرار دهید
--pre-js، به طوری که قبل از کد کامپایل شده اصلی شما اجرا شود (یا قبل از آن اجرا شود
راه دیگری).

-- فشرده سازی
هم کد کامپایل شده و هم فایل های جاسازی شده/پیش بارگذاری شده را فشرده کنید. باید یک باشد
سه گانه،

، ،

جایی که native_encoder یک فایل اجرایی بومی است که stdin را به stdout فشرده می‌کند (the
ساده ترین رابط ممکن)، js_decoder یک فایل جاوا اسکریپت است که a را پیاده سازی می کند
رمزگشا و js_name نام تابعی است که در فایل رمزگشا باید فراخوانی شود (که
باید یک آرایه / آرایه تایپ شده دریافت کند و یک آرایه / آرایه تایپ شده را برگرداند. فشرده سازی
فقط هنگام تولید HTML کار می کند. وقتی فشرده سازی روشن است، همه فایل ها مشخص می شوند
از قبل بارگذاری شده در یک بایگانی بزرگ فشرده می شوند که به همان نام داده می شود
خروجی HTML اما با پسوند .data.compress

-- کوچک کردن
0: فضای خالی جاوا اسکریپت تولید شده را کوچک نکنید (پیش فرض در -O0, -O1، یا اگر
-g استفاده می شود)

1: جاوا اسکریپت تولید شده را کوچک کنید

فضای خالی (پیش فرض در -O2+ با فرض -g استفاده نمی شود)

--شکاف
فایل جاوا اسکریپت حاصل را به قطعات تقسیم می کند تا اشکال زدایی را آسان کند. این گزینه
فقط در صورتی کار می کند که جاوا اسکریپت تولید شود (هدف -o js). فایل های دارای تابع
اعلان ها باید قبل از اجرای فایل اصلی بارگذاری شوند.

بدون گزینه "-g":

فایل هایی با اعلان تابع تا اندازه داده شده با پسوند ایجاد می کند
"_functions.partxxx.js" و یک فایل اصلی با پسوند ".js".

با گزینه "-g":

ساختار دایرکتوری فایل های منبع C را دوباره ایجاد می کند و عملکرد را ذخیره می کند
اعلان ها در فایل های C مربوطه خود با پسوند ".js". اگر چنین فایلی
بیش از اندازه داده شده، فایل هایی با پسوند ".partxxx.js" ایجاد می شوند. اصلی
فایل در دایرکتوری پایه قرار دارد و پسوند ".js" دارد.

--بستن کد منبع را با استفاده از رویکرد bindings "embind" که C/C++ را به هم متصل می کند، کامپایل می کند
و JS.

--نادیده گرفتن-دینامیک-پیوندینگ به طور معمول emcc پیوندهای پویا را مانند رفتار می کند
پیوند استاتیک، با پیوند در کد از کتابخانه پویا. این شکست می خورد اگر
همان کتابخانه پویا بیش از یک بار پیوند داده شده است. با این گزینه پیوند پویا
نادیده گرفته می شود، که به سیستم ساخت اجازه می دهد بدون خطا پیش رود. با این حال، شما
باید بعداً خودتان به صورت دستی به کتابخانه های مشترک پیوند دهید.

---پرونده پوسته
نام مسیر یک فایل HTML اسکلتی که هنگام تولید خروجی HTML استفاده می شود. پوسته
فایل مورد استفاده باید این نشانه را در داخل خود داشته باشد: {{{ SCRIPT_CODE }}} توجه داشته باشید که این
اگر هدفی غیر از HTML با استفاده از آن مشخص شود، آرگومان نادیده گرفته می شود -o گزینه.

--js-library
یک کتابخانه جاوا اسکریپت برای استفاده علاوه بر موارد موجود در src/library_* Emscripten

-v خروجی پرمخاطب را روشن می کند. این خواهد گذشت -v به Clang، و همچنین EMCC_DEBUG را فعال کنید
جزئیات عملیات emcc

--jcache
از کش جاوا اسکریپت استفاده کنید. این به طور پیش فرض غیرفعال است. وقتی فعال شود، emcc ذخیره می شود
نتایج کامپایل در کش را بررسی کنید و هنگام کامپایل بعداً کش را بررسی کنید.
چیزی شبیه کاری که ccache انجام می دهد. این اجازه می دهد تا ساخت های افزایشی - جایی که شما هستید
کامپایل کردن یک برنامه بزرگ، اما فقط بخش کوچکی از آن را اصلاح کرد - تا بسیار سریعتر باشد
(به قیمت IO دیسک بیشتر برای دسترسی های کش). توجه داشته باشید که باید فعال کنید
--jcache هم برای بارگذاری و هم برای ذخیره داده ها، بنابراین باید آن را در یک ساخت کامل فعال کنید
برای ساختن افزایشی بعدی (جایی که شما آن را نیز فعال می‌کنید) تسریع شود.

ذخیره سازی به طور جداگانه در 4 قسمت از کامپایل کار می کند: "pre" که انواع و جهانی است
متغیرها؛ آن اطلاعات سپس به "funcs" که توابع هستند (که
موازی می کنیم)، و سپس "پست" که اطلاعات نهایی را بر اساس آن اضافه می کند
توابع (به عنوان مثال، آیا ما به کد پشتیبانی long64 نیاز داریم). در نهایت، 'jsfuncs' هستند
بهینه سازی در سطح جاوا اسکریپت هر یک از 4 قسمت را می توان به طور جداگانه کش کرد، اما
توجه داشته باشید که آنها می توانند بر یکدیگر تأثیر بگذارند: اگر یک فایل C++ را دوباره کامپایل کنید که
یک متغیر سراسری را تغییر می دهد - مثلاً یک متغیر جهانی را اضافه، حذف یا تغییر می دهد
با افزودن یک printf یا با افزودن مهر زمان کامپایل، «pre» نمی تواند باشد
از حافظه پنهان بارگیری شده است. و از آنجایی که خروجی "pre" به "funcs" و "post" ارسال می شود، آنها
همچنین باطل می شود و فقط 'jsfuncs' ذخیره می شود. پس از اصلاح بپرهیزید
جهانی‌ها اجازه می‌دهند تا ذخیره‌سازی به طور کامل کار کند.

برای حل مشکل ذکر شده در پاراگراف قبل، می توانید استفاده کنید

emscripten_jcache_printf

هنگام اضافه کردن اشکال زدایی printf به کد خود. این تابع به طور ویژه پیش پردازش شده است
که برای اولین آرگومان خود یک رشته سراسری ثابت ایجاد نمی کند. دیدن
emscripten.h برای جزئیات بیشتر. به ویژه توجه داشته باشید که شما باید قبلاً یک
*قبل از* که یکی را اضافه کنید و یک افزایشی انجام دهید، آن تابع را در کد خود فراخوانی کنید
build، به طوری که اضافه کردن یک مرجع خارجی (همچنین یک ویژگی جهانی) انجام نمی شود
همه چیز را باطل کند

توجه داشته باشید که باید استفاده کنید -g در مرحله پیوند (بیت کد به JS)، برای jcache به
کار (در غیر این صورت، کوچک سازی JS می تواند آن را گیج کند).

--پاک کردن حافظه پنهان
حافظه پنهان کتابخانه های سیستم emscripten کامپایل شده را به صورت دستی پاک می کند (libc++،
libc++abi، libc). این معمولا به صورت خودکار انجام می شود، اما اگر llvm را به روز کنید
در محل (به جای داشتن دایرکتوری متفاوت برای نسخه جدید)، ذخیره سازی
مکانیسم ممکن است اشتباه گرفته شود. پاک کردن کش می تواند مشکلات عجیب و غریب مربوط به آن را برطرف کند
ناسازگاری‌های حافظه پنهان، مانند عدم اتصال صدای جرنگ با فایل‌های کتابخانه. این هم
سایر داده های کش شده مانند jcache و relooper bootstrapped را پاک می کند. پس از
حافظه پنهان پاک می شود، این فرآیند خارج می شود.

--save-BC PATH
هنگام کامپایل کردن به جاوا اسکریپت یا HTML، این گزینه یک کپی از بیت کد را ذخیره می کند
به مسیر مشخص شده بیت‌کد شامل تمام فایل‌های مرتبط می‌شود، از جمله
کتابخانه های استاندارد، و پس از هر گونه بهینه سازی زمان پیوند (در صورت وجود).

--memory-init-file
اگر روشن باشد، یک فایل مقداردهی اولیه حافظه جداگانه تولید می کنیم. این کارایی بیشتری دارد
به جای ذخیره سازی داده های اولیه حافظه تعبیه شده در جاوا اسکریپت به عنوان متن.
(پیش فرض خاموش است)

فایل هدف، در صورت مشخص شدن (-o ) آنچه تولید خواهد شد را تعریف می کند:

js
جاوا اسکریپت

.html
HTML با جاوا اسکریپت جاسازی شده

.قبل از میلاد مسیح
بیت کد LLVM (پیش فرض)

.o
بیت کد LLVM (همان bc.)

(توجه داشته باشید که اگر --memory-init-file استفاده می شود، سپس علاوه بر یک فایل js یا .html که است
ایجاد شده، یک فایل .mem نیز ظاهر می شود.)

La -c گزینه (که به gcc می گوید پیوند دهنده را اجرا نکند) باعث می شود بیت کد LLVM
تولید شده است، زیرا emcc فقط در مرحله پیوند نهایی ساخت جاوا اسکریپت تولید می کند.

فایل(های) ورودی می تواند فایل کد منبعی باشد که Clang می تواند مدیریت کند (C یا C++)، LLVM
بیت کد به شکل باینری یا فایل های اسمبلی LLVM به شکل قابل خواندن توسط انسان.

emcc تحت تأثیر چندین متغیر محیطی قرار می گیرد. برای جزئیات، منبع emcc را مشاهده کنید
(جستجوی 'os.environ').

emcc: اهداف پشتیبانی شده: llvm bitcode، javascript، NOT elf (autoconf دوست دارد elf را ببیند
در بالا برای فعال کردن پشتیبانی از اشیاء مشترک)

کپی رایت


حق چاپ © 2013 نویسندگان Emscripten (به AUTHORS.txt مراجعه کنید) این رایگان و منبع باز است
نرم افزار تحت مجوز MIT هیچ گارانتی وجود ندارد. نه حتی برای تجارت یا
برازش برای یک هدف خاص.

با استفاده از خدمات onworks.net از emcc آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad