अंग्रेज़ीफ्रेंचस्पेनिश

Ad


ऑनवर्क्स फ़ेविकॉन

ईएमसीसी - क्लाउड में ऑनलाइन

उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर पर ऑनवर्क्स मुफ्त होस्टिंग प्रदाता में एमसीसी चलाएं

यह कमांड emcc है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर में से एक का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।

कार्यक्रम:

नाम


emcc - एम्सस्क्रिप्टन कंपाइलर फ्रंटएंड

वर्णन


emcc [विकल्प] फ़ाइल...

बहुत से साधारण जीसीसी/जी++ विकल्पों मर्जी काम, एसटी उदाहरण:
--मदद यह जानकारी प्रदर्शित करें

--संस्करण
संकलक संस्करण जानकारी प्रदर्शित करें

ऑप्शंस कि रहे संशोधित or नई in ईएमसी शामिल हैं:
-ओ३ कोई अनुकूलन नहीं (डिफ़ॉल्ट)

-ओ३ asm.js, LLVM सहित सरल अनुकूलन -ओ३ अनुकूलन, और कोई रनटाइम नहीं
अभिकथन या C++ अपवाद कैचिंग (C++ अपवाद कैचिंग को पुन: सक्षम करने के लिए, उपयोग करें -s
DISABLE_EXCEPTION_CATCHING=0 )। (विभिन्न विकल्प के प्रभावों के विवरण के लिए
स्तर, tools/shared.py और src/settings.js में apply_opt_level() देखें।) नोट:
अनुकूलन केवल जावास्क्रिप्ट में संकलित करते समय किया जाता है, मध्यवर्ती के लिए नहीं
बिटकोड, *जब तक* आप EMCC_OPTIMIZE_NORMALLY=1 के साथ निर्माण नहीं करते (जब तक कि अनुशंसित नहीं है)
आप जानते हैं कि आप क्या कर रहे हैं!)

-ओ३ As -ओ३, प्लस द रिलूपर (लूप रिक्रिएशन), LLVM -ओ३ अनुकूलन, और

-s ALIASING_FUNCTION_POINTERS=1

-ओ३ As -ओ३, साथ ही खतरनाक अनुकूलन जो उत्पन्न कोड को तोड़ सकते हैं! यह जोड़ता है

-s FORCE_ALIGNED_MEMORY=1 -s डबल_मोड=0 -s सटीक_I64_MATH=0 --क्लोजर 1
--llvm-lto 1

यह बिल्कुल अनुशंसित नहीं है। इनमें से प्रत्येक को अलग से आज़माना एक बेहतर विचार है
के शीर्ष -ओ३ यह देखने के लिए कि क्या काम करता है। विकी और src/settings.js देखें (के लिए) -s विकल्प)
देखें।

-s विकल्प=VALUE
जावास्क्रिप्ट कोड जनरेशन विकल्प एम्सस्क्रिप्टन कंपाइलर में पास हो गया। के लिए
उपलब्ध विकल्प, देखें src/settings.js ध्यान दें कि उन विकल्पों के लिए जो सूचियाँ हैं, आप
अधिकांश गोले में उद्धरण चिह्नों की आवश्यकता है, उदाहरण के लिए

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

or

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

(उनमें से किसी में भी बाहरी के बिना, आपको एक त्रुटि मिलेगी)

आप एक फ़ाइल भी निर्दिष्ट कर सकते हैं जिससे मान पढ़ा जाएगा, उदाहरण के लिए,

-s DEAD_FUNCTIONS=@/पथ/से/फ़ाइल

की सामग्री /पथ/से/फ़ाइल पढ़ा जाएगा, JSON.parsed और DEAD_FUNCTIONS में सेट किया जाएगा
(इसलिए फ़ाइल में शामिल हो सकता है

["_func1", "func2"]

) ध्यान दें कि पथ निरपेक्ष होना चाहिए, सापेक्ष नहीं।

-g डीबग जानकारी का प्रयोग करें। ध्यान दें कि अंतिम संकलन चरण के दौरान आपको इसकी आवश्यकता है
जावास्क्रिप्ट के लिए बिटकोड, अन्यथा हम इसे डिफ़ॉल्ट रूप से हटा देंगे -ओ३ और ऊपर। में
-ओ३, लाइन नंबर जेनरेट कोड में दिखाए जाएंगे। में -ओ३ और ऊपर,
अनुकूलक उन टिप्पणियों को हटा देता है। हालांकि इस ध्वज का प्रभाव होता है
ऐसी किसी भी चीज़ को अक्षम करना जिससे नाम उलझने या छोटा करने का कारण बनता है (बंद या
पंजीकरण पास)।

--टाइप्ड-सरणी
0: कोई टाइप नहीं किया गया सरणियाँ 1: समानांतर टाइप की गई सरणियाँ 2: साझा (सी-जैसी) टाइप की गई सरणियाँ
(डिफ़ॉल्ट)

--llvm-opts
0: कोई एलएलवीएम अनुकूलन नहीं (डिफ़ॉल्ट में -ओ३) 1: -ओ३ एलएलवीएम अनुकूलन (डिफ़ॉल्ट में
-ओ३) 2: -ओ३ एलएलवीएम अनुकूलन 3: -ओ३ एलएलवीएम अनुकूलन (डिफ़ॉल्ट में -ओ३+)

--llvm-lto
0: कोई एलएलवीएम एलटीओ नहीं (डिफ़ॉल्ट में -ओ३ और नीचे) 1: एलएलवीएम एलटीओ (डिफ़ॉल्ट में -ओ३) नोट: यदि
LLVM अनुकूलन नहीं चल रहे हैं (देखें --llvm-opts), इसे 1 पर सेट करने से कोई प्रभाव नहीं पड़ता है।

--क्लोजर
0: कोई क्लोजर कंपाइलर नहीं (डिफ़ॉल्ट में -ओ३ और नीचे) 1: क्लोजर कंपाइलर चलाएँ। इस
कोड आकार को बहुत कम कर देता है और कुछ मामलों में रनटाइम गति बढ़ा सकता है (हालांकि
विपरीत भी हो सकता है)। ध्यान दें कि इसे चलने में समय लगता है, और इसके लिए कुछ की आवश्यकता हो सकती है
कोड में परिवर्तन। यह डिफ़ॉल्ट रूप से चलाया जाता है -ओ३.

asm.js मोड में, क्लोजर का उपयोग केवल कंपाइल किए गए 'शेल' कोड पर ही किया जाएगा
कोड (संकलित कोड को कस्टम asm.js minifier द्वारा संसाधित किया जाएगा)।

नोट: यदि क्लोजर कंपाइलर एक आउट-ऑफ-मेमोरी हिट करता है, तो JAVA_HEAP_SIZE को इसमें समायोजित करने का प्रयास करें
पर्यावरण (उदाहरण के लिए, 4096GB के लिए 4m तक)।

--js-रूपांतरण
अनुकूलित होने से पहले जेनरेट कोड पर कॉल किया जाएगा। यह आपको देता है
जावास्क्रिप्ट को संशोधित करें, उदाहरण के लिए कुछ कोड जोड़ना या कुछ कोड निकालना, एक तरह से
कि उन संशोधनों को उत्पन्न कोड के साथ एक साथ अनुकूलित किया जाएगा
अच्छी तरह से। उत्पन्न कोड के फ़ाइल नाम के साथ a . के रूप में बुलाया जाएगा
पैरामीटर; कोड को संशोधित करने के लिए, आप मूल डेटा को पढ़ सकते हैं और फिर उसमें जोड़ सकते हैं
या संशोधित डेटा के साथ इसे अधिलेखित कर दें। एक अंतरिक्ष से अलग के रूप में व्याख्या की जाती है
तर्कों की सूची, उदाहरण के लिए, "पायथन प्रोसेसर.py" का एक अजगर का कारण होगा
स्क्रिप्ट चलानी है।

--पूर्व-जेएस
एक फ़ाइल जिसकी सामग्री जनरेट किए गए कोड से पहले जोड़ी जाती है। यह *पहले* किया जाता है
ऑप्टिमाइज़ेशन, इसलिए क्लोजर कंपाइलर चलने पर इसे ठीक से छोटा किया जाएगा।

--पोस्ट-जेएस
एक फ़ाइल जिसकी सामग्री उत्पन्न कोड के बाद जोड़ी जाती है यह *पहले* किया जाता है
ऑप्टिमाइज़ेशन, इसलिए क्लोजर कंपाइलर चलने पर इसे ठीक से छोटा किया जाएगा।

--एम्बेड-फ़ाइल
जेनरेट की गई जावास्क्रिप्ट के अंदर एम्बेड करने के लिए एक फाइल। संकलित कोड करने में सक्षम हो जाएगा
वर्तमान निर्देशिका में फ़ाइल को उसी नाम से एक्सेस करें जैसा कि यहां दिया गया है। तो अगर
तुम करो --एम्बेड-फ़ाइल dir/file.dat, फिर (1) dir/file.dat के सापेक्ष मौजूद होना चाहिए
जहाँ आप emcc चलाते हैं, और (2) आपका संकलित कोड फ़ाइल को ढूँढने में सक्षम होगा
उसी पथ को पढ़ना, dir/file.dat। यदि कोई निर्देशिका यहाँ पारित की जाती है, तो उसका संपूर्ण
सामग्री एम्बेड की जाएगी।

--प्रीलोड-फ़ाइल
संकलित कोड को अतुल्यकालिक रूप से चलाने से पहले प्रीलोड करने के लिए एक फ़ाइल। अन्यथा
के समान --एम्बेड-फ़ाइल, सिवाय इसके कि यह विकल्प केवल जनरेट करते समय प्रासंगिक है
HTML (यह एसिंक्रोनस बाइनरी XHRs का उपयोग करता है), या JS जिसका उपयोग किसी वेब पेज में किया जाएगा। अगर
एक निर्देशिका यहां पास की गई है, इसकी पूरी सामग्री पहले से लोड हो जाएगी। प्रीलोडेड फ़ाइलें
filename.data में संग्रहीत हैं, जहां filename.html मुख्य फ़ाइल है जिसे आप संकलित कर रहे हैं
प्रति। अपना कोड चलाने के लिए, आपको .html और .data दोनों की आवश्यकता होगी।

emcc एम्बेडेड की वास्तविक पैकेजिंग करने के लिए tools/file_packager.py चलाता है और
प्रीलोडेड फाइलें। आप चाहें तो फाइल पैकेजर को खुद चला सकते हैं, डॉक्स देखें
उस फ़ाइल के अंदर। फिर आपको फ़ाइल पैकेजर के आउटपुट को emcc . में रखना चाहिए
--पूर्व-जेएस, ताकि यह आपके मुख्य संकलित कोड से पहले निष्पादित हो (या इसे in . से पहले चलाएं)
किसी अन्य तरीके से)।

--संपीड़न
संकलित कोड और एम्बेडेड/प्रीलोडेड फ़ाइलों दोनों को संपीड़ित करें। एक होना चाहिए
तिगुना,

, ,

जहां मूल_एनकोडर एक मूल निष्पादन योग्य है जो स्टड को स्टडआउट (the .) में संपीड़ित करता है
सरलतम संभव इंटरफ़ेस), js_decoder एक JavaScript फ़ाइल है जो a . को लागू करती है
डिकोडर, और js_name डिकोडर फ़ाइल में कॉल करने के लिए फ़ंक्शन का नाम है (जो
एक सरणी/टाइप की गई सरणी प्राप्त करनी चाहिए और एक सरणी/टाइप की गई सरणी वापस करनी चाहिए। दबाव
केवल HTML उत्पन्न करते समय काम करता है। जब संपीड़न चालू होता है, तो सभी फ़ाइल को निर्दिष्ट किया जाता है
प्रीलोडेड को एक बड़े संग्रह में संपीड़ित किया जाता है, जिसे समान नाम दिया गया है
आउटपुट HTML लेकिन प्रत्यय के साथ .data.compress

-- छोटा करना
0: उत्पन्न जावास्क्रिप्ट के खाली स्थान को छोटा न करें (डिफ़ॉल्ट में -ओ३, -ओ३, या अगर
-g प्रयोग किया जाता है)

1: उत्पन्न जावास्क्रिप्ट को छोटा करें

व्हाइटस्पेस (डिफ़ॉल्ट में -ओ३+, मान लेना -g उपयोग नहीं होता है)

--विभाजित करना
डिबगिंग को आसान बनाने के लिए परिणामी जावास्क्रिप्ट फ़ाइल को टुकड़ों में विभाजित करता है। इस विकल्प
केवल तभी काम करता है जब जावास्क्रिप्ट उत्पन्न होता है (लक्ष्य -o .जेएस)। समारोह के साथ फ़ाइलें
घोषणाओं को निष्पादन पर मुख्य फ़ाइल से पहले लोड किया जाना चाहिए।

"-g" विकल्प के बिना:

प्रत्यय के साथ दिए गए आकार तक फ़ंक्शन घोषणाओं के साथ फ़ाइलें बनाता है
"_functions.partxxx.js" और प्रत्यय ".js" के साथ एक मुख्य फ़ाइल।

"-g" विकल्प के साथ:

C स्रोत फ़ाइलों की निर्देशिका संरचना को फिर से बनाता है और फ़ंक्शन को संग्रहीत करता है
प्रत्यय ".js" के साथ उनकी संबंधित सी फाइलों में घोषणाएं। अगर ऐसी फाइल
दिए गए आकार से अधिक है, प्रत्यय ".partxxx.js" वाली फ़ाइलें बनाई जाती हैं। मुख्य
फ़ाइल मूल निर्देशिका में रहती है और इसमें प्रत्यय ".js" है।

--बिंद "एम्बिंड" बाइंडिंग दृष्टिकोण का उपयोग करके स्रोत कोड संकलित करता है, जो C/C++ . को जोड़ता है
और जे एस.

--अनदेखा-गतिशील-लिंकिंग आम तौर पर emcc डायनेमिक लिंकिंग की तरह व्यवहार करेगा
गतिशील पुस्तकालय से कोड में लिंक करके स्थिर लिंकिंग। यह विफल रहता है अगर
एक ही गतिशील पुस्तकालय एक से अधिक बार जुड़ा हुआ है। इस विकल्प के साथ, डायनेमिक लिंकिंग
अनदेखा किया जाता है, जो बिल्ड सिस्टम को त्रुटियों के बिना आगे बढ़ने की अनुमति देता है। हालांकि, आप
बाद में स्वयं को साझा पुस्तकालयों से मैन्युअल रूप से लिंक करने की आवश्यकता होगी।

--शेल-फाइल
HTML आउटपुट जनरेट करते समय उपयोग की जाने वाली कंकाल HTML फ़ाइल का पथ नाम। खोल
उपयोग की गई फ़ाइल के अंदर यह टोकन होना चाहिए: {{{SCRIPT_CODE}}} ध्यान दें कि यह
यदि HTML के अलावा किसी अन्य लक्ष्य का उपयोग करके निर्दिष्ट किया जाता है तो तर्क को अनदेखा कर दिया जाता है -o विकल्प.

--js-लाइब्रेरी
Emscripten के src/library_* के अतिरिक्त उपयोग करने के लिए एक JavaScript लाइब्रेरी

-v वर्बोज़ आउटपुट चालू करता है। यह निकल जाएगा -v Clang करने के लिए, और EMCC_DEBUG को भी सक्षम करें
विवरण ईएमसी के संचालन

--jcache
जावास्क्रिप्ट कैश का प्रयोग करें। यह डिफ़ॉल्ट रूप से अक्षम है। सक्षम होने पर, emcc स्टोर हो जाएगा
कैश में संकलन के परिणाम और बाद में संकलन करते समय कैश की जांच करें,
कुछ ऐसा जो ccache करता है। यह वृद्धिशील निर्माण की अनुमति देता है - जहां आप हैं
एक बड़े कार्यक्रम को संकलित करना लेकिन केवल इसके एक छोटे से हिस्से को संशोधित करना - बहुत तेज होना
(कैश एक्सेस के लिए अधिक डिस्क IO की कीमत पर)। ध्यान दें कि आपको सक्षम करने की आवश्यकता है
--jcache डेटा लोड करने और सहेजने दोनों के लिए, इसलिए आपको इसे पूर्ण बिल्ड पर सक्षम करना होगा
बाद में वृद्धिशील निर्माण के लिए (जहाँ आप इसे सक्षम भी करते हैं) को गति दी जाएगी।

कैशिंग संकलन के 4 भागों पर अलग से काम करता है: 'प्री' जो कि प्रकार और वैश्विक है
चर; उस जानकारी को तब 'फ़ंक्शन' में फीड किया जाता है जो कि फंक्शन (जो .) हैं
हम समानांतर करते हैं), और फिर 'पोस्ट' जो के आधार पर अंतिम जानकारी जोड़ता है
फ़ंक्शन (उदाहरण के लिए, क्या हमें long64 समर्थन कोड की आवश्यकता है)। अंत में, 'jsfuncs' हैं
जावास्क्रिप्ट-स्तरीय अनुकूलन। 4 भागों में से प्रत्येक को अलग से कैश किया जा सकता है, लेकिन
ध्यान दें कि वे एक-दूसरे को प्रभावित कर सकते हैं: यदि आप एक सी ++ फ़ाइल को फिर से संकलित करते हैं तो
एक वैश्विक चर बदलता है - उदाहरण के लिए, वैश्विक चर जोड़ता है, हटाता है या संशोधित करता है, कहें
एक प्रिंटफ जोड़कर या एक संकलन-समय टाइमस्टैम्प जोड़कर, तो 'पूर्व' नहीं हो सकता
कैश से लोड किया गया। और चूंकि 'प्री' का आउटपुट 'फ़ंक्शन' और 'पोस्ट' पर भेजा जाता है, वे
अमान्य भी हो जाएगा, और केवल 'jsfuncs' को कैश किया जाएगा। इसलिए संशोधन से बचें
ग्लोबल्स को कैशिंग को पूरी तरह से काम करने दें।

पिछले पैराग्राफ में बताई गई समस्या को हल करने के लिए, आप इसका उपयोग कर सकते हैं

emscripten_jcache_printf

अपने कोड में डिबग प्रिंटफ़्स जोड़ते समय। वह फ़ंक्शन विशेष रूप से पूर्व-संसाधित है इसलिए
कि यह अपने पहले तर्क के लिए निरंतर स्ट्रिंग वैश्विक नहीं बनाता है। देखो
अधिक जानकारी के लिए emscripten.h. विशेष रूप से ध्यान दें कि आपके पास पहले से ही एक होना चाहिए
अपने कोड में उस फ़ंक्शन को कॉल करें *इससे पहले* कि आप एक जोड़ें और एक वृद्धिशील करें
निर्माण करें, ताकि बाहरी संदर्भ (एक वैश्विक संपत्ति भी) जोड़ना न हो
सब कुछ अमान्य।

ध्यान दें कि आपको उपयोग करना चाहिए -g लिंकिंग चरण के दौरान (जेएस के लिए बिटकोड), jcache to . के लिए
काम (अन्यथा, जेएस मिनिफिकेशन इसे भ्रमित कर सकता है)।

--कैश को साफ़ करें
संकलित एमस्क्रिप्टन सिस्टम लाइब्रेरी के कैश को मैन्युअल रूप से साफ़ करता है (libc++,
libc++abi, libc)। यह सामान्य रूप से स्वचालित रूप से नियंत्रित किया जाता है, लेकिन यदि आप llvm . को अपडेट करते हैं
इन-प्लेस (नए संस्करण के लिए एक अलग निर्देशिका रखने के बजाय), कैशिंग
तंत्र भ्रमित हो सकता है। कैशे साफ़ करने से संबंधित अजीब समस्याएं ठीक हो सकती हैं
कैश असंगतताएं, जैसे क्लैंग लाइब्रेरी फ़ाइलों के साथ लिंक करने में विफल। ये ब
jcache और बूटस्ट्रैप्ड रिलूपर जैसे अन्य कैश्ड डेटा को साफ़ करता है। के बाद
कैश साफ़ हो गया है, यह प्रक्रिया बाहर निकल जाएगी।

--सेव-बीसी पथ
जावास्क्रिप्ट या एचटीएमएल में संकलित करते समय, यह विकल्प बिटकोड की एक प्रति सहेज लेगा
निर्दिष्ट पथ के लिए। बिटकोड में लिंक की जा रही सभी फाइलें शामिल होंगी, जिनमें शामिल हैं
मानक पुस्तकालय, और किसी भी लिंक-समय अनुकूलन (यदि कोई हो) के बाद।

--मेमोरी-इनिट-फाइल
यदि चालू है, तो हम एक अलग मेमोरी इनिशियलाइज़ेशन फ़ाइल जेनरेट करते हैं। यह अधिक कुशल है
जावास्क्रिप्ट के अंदर एम्बेडेड मेमोरी इनिशियलाइज़ेशन डेटा को टेक्स्ट के रूप में संग्रहीत करने की तुलना में।
(डिफ़ॉल्ट बंद है)

लक्ष्य फ़ाइल, यदि निर्दिष्ट हो (-o ), परिभाषित करता है कि क्या उत्पन्न होगा:

.जेएस
जावास्क्रिप्ट

.html
एम्बेडेड जावास्क्रिप्ट के साथ एचटीएमएल

.बीसी
एलएलवीएम बिटकोड (डिफ़ॉल्ट)


एलएलवीएम बिटकोड (.बीसी के समान)

(ध्यान दें कि यदि --मेमोरी-इनिट-फाइल का उपयोग किया जाता है, फिर एक .js या .html फ़ाइल के अतिरिक्त जो है
उत्पन्न, एक .mem फ़ाइल भी दिखाई देगी।)

RSI -c विकल्प (जो जीसीसी को लिंकर नहीं चलाने के लिए कहता है) एलएलवीएम बिटकोड का कारण बनेगा
उत्पन्न होता है, क्योंकि emcc केवल बिल्डिंग के अंतिम लिंकिंग चरण में जावास्क्रिप्ट उत्पन्न करता है।

इनपुट फ़ाइल या तो स्रोत कोड फ़ाइलें हो सकती हैं जिन्हें क्लैंग संभाल सकता है (सी या सी ++), एलएलवीएम
बाइनरी फॉर्म में बिटकोड, या मानव-पठनीय रूप में एलएलवीएम असेंबली फाइलें।

emcc कई पर्यावरण चर से प्रभावित होता है। विवरण के लिए, emcc . का स्रोत देखें
('os.environ' के लिए खोजें)।

emcc: समर्थित लक्ष्य: llvm बिटकोड, जावास्क्रिप्ट, योगिनी नहीं (autoconf योगिनी को देखना पसंद करता है
साझा वस्तु समर्थन को सक्षम करने के लिए ऊपर)

कॉपीराइट


कॉपीराइट © 2013 एम्सस्क्रिप्टन लेखक (देखें AUTHORS.txt) यह मुफ़्त और खुला स्रोत है
एमआईटी लाइसेंस के तहत सॉफ्टवेयर। कोई वारंटी नहीं है; व्यापारिकता के लिए भी नहीं या
किसी विशेष उद्देश्य के लिए उपयुक्तता।

onworks.net सेवाओं का उपयोग करके ईएमसी ऑनलाइन का उपयोग करें


फ्री सर्वर और वर्कस्टेशन

विंडोज और लाइनेक्स एप डाउनलोड करें

लिनक्स कमांड

Ad