عربيالفرنسيةالإسبانية

Ad


OnWorks فافيكون

emcc - على الإنترنت في السحابة

قم بتشغيل emcc في مزود استضافة OnWorks المجاني عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر emcc الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


emcc - الواجهة الأمامية لمجمع Emscripten

الوصف


ملف [خيارات] emcc ...

معظم عادي مجلس التعاون الخليجي / g ++ الخيارات سوف عمل، For مثال:
--مساعدة اعرض هذه المعلومات

--الإصدار
عرض معلومات إصدار المترجم

مزيد من الخيارات أن . تم التعديل or جديد in emcc تتضمن:
-O0 لا توجد تحسينات (افتراضي)

-O1 تحسينات بسيطة ، بما في ذلك asm.js و LLVM -O1 التحسينات ، ولا وقت التشغيل
التأكيدات أو اصطياد استثناء C ++ (لإعادة تمكين اصطياد استثناء C ++ ، استخدم -s
DISABLE_EXCEPTION_CATCHING = 0). (للحصول على تفاصيل حول تأثيرات اختيارات مختلفة
المستويات ، راجع application_opt_level () في tools / shared.py وأيضًا src / settings.js.) ملاحظة:
يتم إجراء التحسينات فقط عند التحويل البرمجي إلى JavaScript ، وليس على المستوى المتوسط
رمز البت ، * ما لم * تُنشئ باستخدام 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 لمعرفة ما ينفع. راجع wiki و src / settings.js (لملف -s خيارات)
للمزيد من المعلومات.

-s الخيار = VALUE
تم تمرير خيار إنشاء كود JavaScript إلى مترجم emscripten. بالنسبة إلى
الخيارات المتاحة ، راجع src / settings.js لاحظ أنه بالنسبة للخيارات التي هي قوائم ، يمكنك
تحتاج علامات اقتباس في معظم القذائف ، على سبيل المثال

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

or

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

(بدون حرف "s الخارجية في أيٍّ منهما ، ستحصل على خطأ)

يمكنك أيضًا تحديد ملف يمكن قراءة القيمة منه ، على سبيل المثال ،

-s DEAD_FUNCTIONS = @ / مسار / إلى / ملف

محتويات / المسار / إلى / ملف ستتم قراءتها ، وسيتم تحليل JSON.parsed وتعيينها في DEAD_FUNCTIONS
(لذلك يمكن أن يحتوي الملف على

["_func1"، "func2"]

). لاحظ أن المسار يجب أن يكون مطلقًا وليس نسبيًا.

-g استخدم معلومات التصحيح. لاحظ أنك تحتاج إلى هذا أثناء مرحلة التجميع الأخيرة من
bitcode إلى JavaScript ، وإلا فسنزيله افتراضيًا في -O1 و ما فوق. في
-O0، سيتم عرض أرقام الأسطر في الكود الذي تم إنشاؤه. في -O1 وما فوق ، فإن
محسن يزيل تلك التعليقات. ومع ذلك ، فإن هذا العلم له تأثير
تعطيل أي شيء يتسبب في تشويه الأسماء أو تصغيرها (إغلاق أو
تسجيل المرور).

--مصفوفات من نوع
0: لا توجد مصفوفات مكتوبة 1: مصفوفات من النوع المتوازي 2: مصفوفات مكتوبة مشتركة (مثل C)
(افتراضي)

--llvm- الخيارات
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- الخيارات) ، فإن ضبط هذا على 1 ليس له أي تأثير.

--إنهاء
0: لا يوجد مترجم إغلاق (افتراضي في -O2 وأدناه) 1: تشغيل مترجم الإغلاق. هذا
يقلل بشكل كبير من حجم الكود وقد يؤدي في بعض الحالات إلى زيادة سرعة وقت التشغيل (على الرغم من أن
يمكن أن يحدث العكس أيضًا). لاحظ أن الجري يستغرق بعض الوقت ، وقد يتطلب بعض الوقت
التغييرات على الكود. يتم تشغيل هذا بشكل افتراضي في -O3.

في وضع asm.js ، سيتم استخدام الإغلاق فقط على كود "shell" حول الملف المترجم
الكود (ستتم معالجة الكود المترجم بواسطة أداة تصغير asm.js المخصصة).

ملاحظة: إذا وصل برنامج التحويل البرمجي للإغلاق إلى نفاد الذاكرة ، فحاول ضبط JAVA_HEAP_SIZE في
البيئة (على سبيل المثال ، 4096 م مقابل 4 جيجابايت).

--js- تحويل
سيتم استدعاؤه على الكود الذي تم إنشاؤه قبل أن يتم تحسينه. هذا يتيح لك
تعديل JavaScript ، على سبيل المثال إضافة بعض التعليمات البرمجية أو إزالة بعض التعليمات البرمجية بطريقة ما
أنه سيتم تحسين هذه التعديلات مع الكود الذي تم إنشاؤه
على وجه صحيح. سيتم استدعاؤه باسم ملف الكود الذي تم إنشاؤه كملف
معامل؛ لتعديل الكود ، يمكنك قراءة البيانات الأصلية ثم إلحاقها
أو الكتابة فوقها بالبيانات المعدلة. يتم تفسيره على أنه مفصول بفراغ
قائمة الحجج ، على سبيل المثال ، من "python processor.py" يتسبب في وجود python
البرنامج النصي ليتم تشغيله.

- ما قبل js
ملف تتم إضافة محتوياته قبل الرمز الذي تم إنشاؤه. يتم ذلك * قبل *
التحسين ، لذلك سيتم تصغيره بشكل صحيح إذا تم تشغيل مترجم الإغلاق.

- post-js
ملف تتم إضافة محتوياته بعد الرمز الذي تم إنشاؤه ويتم ذلك * قبل *
التحسين ، لذلك سيتم تصغيره بشكل صحيح إذا تم تشغيل مترجم الإغلاق.

--ملف ملف
ملف لتضمينه داخل جافا سكريبت الذي تم إنشاؤه. سوف تكون الشفرة المترجمة قادرة على
الوصول إلى الملف في الدليل الحالي بنفس الاسم الوارد هنا. حتى إذا
أنت تفعل --ملف ملف dir / file.dat ، إذن (1) يجب أن يوجد dir / file.dat بالنسبة إلى
حيث تقوم بتشغيل emcc ، و (2) سيكون رمزك المجمع قادرًا على العثور على الملف بواسطة
قراءة نفس المسار ، dir / file.dat. إذا تم تمرير دليل هنا ، فإنه بأكمله
سيتم تضمين المحتويات.

--ملف التحميل المسبق
ملف للتحميل المسبق قبل تشغيل التعليمات البرمجية المترجمة بشكل غير متزامن. خلاف ذلك
على غرار --ملف ملف، باستثناء أن هذا الخيار مناسب فقط عند التوليد
HTML (يستخدم XHRs الثنائية غير المتزامنة) ، أو JS التي سيتم استخدامها في صفحة الويب. لو
يتم تمرير دليل هنا ، سيتم تحميل محتوياته بالكامل مسبقًا. الملفات المحملة مسبقا
يتم تخزينها في filename.data ، حيث يكون filename.html هو الملف الرئيسي الذي تقوم بترجمته
ل. لتشغيل التعليمات البرمجية الخاصة بك ، ستحتاج إلى كل من .html و. البيانات.

يدير emcc الأدوات / file_packager.py للقيام بالتعبئة الفعلية لملفات
الملفات المحملة مسبقًا. يمكنك تشغيل أداة تجميع الملفات بنفسك إذا أردت ، راجع المستندات
داخل هذا الملف. يجب عليك بعد ذلك وضع إخراج ملف الحزم في emcc
- ما قبل js، بحيث يتم تنفيذه قبل الكود المترجم الرئيسي (أو قم بتشغيله من قبل بتنسيق
بطريقة أخرى).

--ضغط
ضغط كل من التعليمات البرمجية المترجمة والملفات المضمنة / المحملة مسبقًا. يجب أن يكون أ
ثلاثي

و و

حيث يعد native_encoder ملفًا تنفيذيًا أصليًا يضغط stdin إلى stdout (ملف
أبسط واجهة ممكنة) ، js_decoder هو ملف JavaScript يقوم بتنفيذ ملف
decoder ، و js_name هو اسم الوظيفة التي يتم الاتصال بها في ملف وحدة فك التشفير (الذي
يجب أن تتلقى مصفوفة / مصفوفة مكتوبة وتعيد مصفوفة / مصفوفة مكتوبة. ضغط
يعمل فقط عند إنشاء HTML. عندما يكون الضغط في وضع التشغيل ، يتم تحديد كل الملفات
يتم ضغط التحميل المسبق في أرشيف واحد كبير ، والذي يحمل نفس اسم ملف
إخراج HTML ولكن مع لاحقة .data.compress

- تصغير
0: لا تقلل المسافة البيضاء التي تم إنشاؤها في JavaScript (الافتراضي بتنسيق -O0, -O1، أو إذا
-g يستخدم)

1: تصغير جافا سكريبت الذي تم إنشاؤه

مسافة بيضاء (افتراضي في -O2+ ، على افتراض -g هو ليس مستخدما)

--الانقسام
يقسم ملف جافا سكريبت الناتج إلى أجزاء لتسهيل التصحيح. هذا الخيار
يعمل فقط إذا تم إنشاء Javascript (الهدف -o .js). الملفات ذات الوظيفة
يجب تحميل الإعلانات قبل الملف الرئيسي عند التنفيذ.

بدون خيار "-g":

ينشئ ملفات بإعلانات الوظائف حتى الحجم المحدد مع اللاحقة
"_functions.partxxx.js" وملف رئيسي بلاحقة ".js".

مع خيار "-g":

يعيد تكوين بنية الدليل لملفات المصدر C ووظيفة المخازن
الإعلانات في ملفات C الخاصة بها مع اللاحقة ".js". إذا كان هذا الملف
يتجاوز الحجم المحدد ، يتم إنشاء الملفات ذات اللاحقة ".partxxx.js". الرئيسية
الملف موجود في الدليل الأساسي وله اللاحقة ".js".

--ربط يجمع الكود المصدري باستخدام أسلوب الربط "embind" ، الذي يربط C / C ++
وشبيبة.

- إهمال الارتباط الديناميكي عادةً ما يتعامل emcc مع الارتباط الديناميكي مثل
ربط ثابت ، عن طريق ربط الكود من المكتبة الديناميكية. هذا يفشل إذا كان
نفس المكتبة الديناميكية مرتبطة أكثر من مرة. مع هذا الخيار ، الارتباط الديناميكي
تم تجاهله ، مما يسمح لنظام البناء بالمتابعة دون أخطاء. ولكن هل
ستحتاج إلى الارتباط يدويًا بالمكتبات المشتركة لاحقًا بنفسك.

- ملف قشر
اسم المسار لملف HTML هيكلي المستخدم عند إنشاء مخرجات HTML. القذيفة
يحتاج الملف المستخدم إلى وجود هذا الرمز المميز بداخله: {{{SCRIPT_CODE}}} لاحظ أن هذا
يتم تجاهل الوسيطة إذا تم تحديد هدف بخلاف HTML باستخدام -o الخيار.

- مكتبة شبيبة
مكتبة JavaScript لاستخدامها بالإضافة إلى تلك الموجودة في src / library_ * الخاصة بـ Emscripten

-v يقوم بتشغيل الإخراج المطول. هذا سيمر -v إلى Clang ، وقم أيضًا بتمكين EMCC_DEBUG إلى
تفاصيل عمليات emcc's

- يكاشي
استخدم ذاكرة التخزين المؤقت لجافا سكريبت. تم تعطيل هذا افتراضيا. عند التمكين ، سيتم تخزين emcc
نتائج التجميع في ذاكرة التخزين المؤقت والتحقق من ذاكرة التخزين المؤقت عند التجميع لاحقًا ،
شيء من هذا القبيل ما يفعله ذاكرة التخزين المؤقت. هذا يسمح ببناءات تدريجية - مكان وجودك
تجميع برنامج كبير ولكن فقط تعديل جزء صغير منه - ليكون أسرع بكثير
(على حساب المزيد من عمليات الإدخال والإخراج للقرص لوصول ذاكرة التخزين المؤقت). لاحظ أنك بحاجة إلى التمكين
- يكاشي لكل من تحميل وحفظ البيانات ، لذلك يجب تمكينها في بناء كامل
من أجل زيادة سرعة البناء الإضافي (حيث يمكنك أيضًا تمكينه).

يعمل التخزين المؤقت بشكل منفصل على 4 أجزاء من التجميع: "pre" وهو عبارة عن أنواع وعالمية
المتغيرات؛ ثم يتم إدخال هذه المعلومات في "funcs" وهي الوظائف (التي
نقوم بالتوازي) ، ثم "النشر" الذي يضيف المعلومات النهائية بناءً على
وظائف (على سبيل المثال ، هل نحتاج إلى رمز دعم long64). أخيرًا ، "jsfuncs"
تحسينات على مستوى جافا سكريبت. يمكن تخزين كل جزء من الأجزاء الأربعة مؤقتًا بشكل منفصل ، ولكن
لاحظ أنها يمكن أن تؤثر على بعضها البعض: إذا قمت بإعادة ترجمة ملف C ++ واحد ، فسيكون ذلك
يغير متغيرًا شاملاً - على سبيل المثال ، يضيف أو يزيل أو يعدل متغيرًا عالميًا ، على سبيل المثال
عن طريق إضافة printf أو عن طريق إضافة طابع زمني وقت الترجمة ، فلا يمكن أن يكون "pre"
تحميلها من ذاكرة التخزين المؤقت. وبما أن مخرجات "pre's" تُرسل إلى "funcs" و "post" ، فإنهم
سيتم إبطالها أيضًا ، وسيتم تخزين "jsfuncs" فقط مؤقتًا. لذا تجنب التعديل
globals للسماح بعمل التخزين المؤقت بشكل كامل.

لحل المشكلة المذكورة في الفقرة السابقة ، يمكنك استخدام

emscripten_jcache_printf

عند إضافة printfs التصحيح إلى التعليمات البرمجية الخاصة بك. يتم تجهيز هذه الوظيفة بشكل خاص لذلك
أنها لا تنشئ سلسلة ثابتة عالمية للوسيطة الأولى الخاصة بها. يرى
emscripten.h لمزيد من التفاصيل. لاحظ على وجه الخصوص أنك بحاجة إلى أن يكون لديك بالفعل ملف
استدعاء هذه الوظيفة في التعليمات البرمجية الخاصة بك * قبل * إضافة واحدة وإجراء تزايدي
بناء ، بحيث لا تؤدي إضافة مرجع خارجي (أيضًا خاصية عالمية)
يبطل كل شيء.

لاحظ أنه يجب عليك استخدام -g أثناء مرحلة الربط (bitcode to JS) ، من أجل jcache بـ
العمل (خلاف ذلك ، يمكن أن يؤدي تصغير JS إلى إرباكه).

--مسح ذاكرة التخزين المؤقت
يمسح ذاكرة التخزين المؤقت لمكتبات نظام emscripten المترجمة يدويًا (libc ++ ،
libc ++ abi، libc). عادة ما يتم التعامل مع هذا تلقائيًا ، ولكن إذا قمت بتحديث llvm
في المكان (بدلاً من وجود دليل مختلف لإصدار جديد) ، فإن التخزين المؤقت
يمكن الخلط بين الآلية. يمكن أن يؤدي مسح ذاكرة التخزين المؤقت إلى إصلاح المشكلات الغريبة المتعلقة بـ
عدم توافق ذاكرة التخزين المؤقت ، مثل فشل clang في الارتباط بملفات المكتبة. هذا ايضا
يمسح البيانات الأخرى المخزنة مؤقتًا مثل jcache و bootstrapped relooper. بعد
تم مسح ذاكرة التخزين المؤقت ، سيتم إنهاء هذه العملية.

- حفظ- قبل الميلاد PATH
عند التحويل البرمجي إلى JavaScript أو HTML ، سيحفظ هذا الخيار نسخة من رمز البت
إلى المسار المحدد. سيتضمن رمز البت جميع الملفات التي يتم ربطها ، بما في ذلك
المكتبات القياسية ، وبعد أي تحسينات لوقت الارتباط (إن وجدت).

- ذاكرة-ملف- init
في حالة التشغيل ، نقوم بإنشاء ملف تهيئة ذاكرة منفصل. هذا أكثر كفاءة
من تخزين بيانات تهيئة الذاكرة المضمنة داخل JavaScript كنص.
(الافتراضي هو إيقاف)

الملف الهدف ، إذا تم تحديده (-o ) ، يحدد ما سيتم إنشاؤه:

.js
جافا سكريبت

.لغة البرمجة
HTML مع JavaScript مضمن

.قبل الميلاد
رمز البت LLVM (افتراضي)

.o
رمز البت LLVM (مثل .bc)

(لاحظ أنه إذا كان - ذاكرة-ملف- init يتم استخدامه ، بالإضافة إلى ملف .js أو .html وهو
تم إنشاؤه ، سيظهر ملف .mem أيضًا.)

-c الخيار (الذي يخبر مجلس التعاون الخليجي بعدم تشغيل الرابط) سيتسبب في جعل رمز البت LLVM
تم إنشاؤه ، نظرًا لأن emcc يقوم فقط بإنشاء JavaScript في مرحلة الربط النهائية للبناء.

يمكن أن يكون ملف (ملفات) الإدخال إما ملفات التعليمات البرمجية المصدر التي يمكن لـ Clang معالجتها (C أو C ++) ، LLVM
bitcode في شكل ثنائي ، أو ملفات التجميع LLVM في شكل يمكن قراءته من قبل الإنسان.

يتأثر emcc بالعديد من متغيرات البيئة. لمزيد من التفاصيل ، اعرض مصدر emcc
(ابحث عن "os.environ").

emcc: الأهداف المدعومة: llvm bitcode، javascript، NOT elf (يحب autoconf رؤية elf
أعلاه لتمكين دعم الكائنات المشتركة)

حقوق الطبع والنشر


حقوق النشر © 2013 لمؤلفي Emscripten (انظر AUTHORS.txt) هذا مجاني ومفتوح المصدر
برمجيات تحت رخصة معهد ماساتشوستس للتكنولوجيا. لا يوجد ضمان. ولا حتى للتسويق أو
الملاءمة لغرض معين.

استخدم emcc عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

أوامر لينكس

Ad