2017-08-22 17 views
7

के लिए गुजर तर्क मैं एक जंग परियोजना मैं webasm प्रति http://asquera.de/blog/2017-04-10/the-path-to-rust-on-the-web/जंग, WebAssembly, और वृद्धि की कुल स्मृति

परियोजना संकलित संकलन रहा है। जब मैंने इसे Chrome कैनरी में चलाने के लिए, यह स्मृति से बाहर चलाता है और मुझे एक बहुत ही उपयोगी त्रुटि संदेश देता है:

abort("Cannot enlarge memory arrays. Either (1) compile with -s 
TOTAL_MEMORY=X with X higher than the current value 16777216, (2) compile 
with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, 
... 

समस्या है, इसका स्पष्ट नहीं कैसे rustc को/निर्माण उपकरण श्रृंखला उन झंडे पारित करने के लिए।

न तो EMMAKEN_CFLAGS या निम्न काम की स्थापना:

cargo rustc -v --target=wasm32-unknown-emscripten --release -- -Clink-args="-s TOTAL_MEMORY=33554432" 

उत्तर

3

This ब्लॉग पोस्ट एक समाधान मुझे लगता है कि आपके मामले में भी लागू किया जा सकता प्रदान करता है:

के रूप में सबसे अच्छा के रूप में मैं बता सकता है कार्गो के माध्यम से अधिकतर लिंकर तर्कों को पारित करने का कोई तरीका नहीं है। इसके बजाय, एक कस्टम लिंकर निर्दिष्ट करके सीमा के चारों ओर हैक करें जो वास्तव में वास्तविक लिंकर को लपेटकर एक शेल स्क्रिप्ट है।

emcc "-s" "TOTAL_MEMORY=33554432" [email protected] 

(।। आप अन्य विकल्पों यह काम करने के लिए आवश्यकता हो सकती है जानकारी के लिए blog post की जाँच करें)

और:

कि उचित विकल्प के साथ emscripten कॉल emcc_link की तरह एक खोल स्क्रिप्ट बनाएं .cargo/config संपादित करके/बनाने के द्वारा इसे अपने प्रोजेक्ट के लिए उपयोग करने के लिए निर्दिष्ट करें:

[target.wasm32-unknown-emscripten] 
linker = "/your/project/dir/emcc_sdl" 

[target.asmjs-unknown-emscripten] 
linker = "/your/project/dir/emcc_sdl" 

मैंने निर्दयतापूर्वक माना कि निर्माण वातावरण लिनक्स या जैसा है। विंडोज़ पर शेल स्क्रिप्ट शायद बैच स्क्रिप्ट होनी चाहिए और मुझे यकीन नहीं है कि .cargo/config में कोई अंतर है या नहीं।

अस्वीकरण: मैंने इनमें से कोई भी प्रयास नहीं किया है।

+0

यह काम नहीं करता है। लेकिन सुनिश्चित करने के लिए कुछ खुदाई करने की जरूरत है। विशेष रूप से, ऐसा प्रतीत होता है कि विशेष लिंकर को प्रोजेक्ट निर्देशिका – imichaelmiers

+0

में किसी .cargo/config के साथ कभी भी शामिल नहीं किया जाता है। यह डीबग करना मुश्किल है .. कार्गो कॉन्फ़िगरेशन फ़ाइल में अमान्य सेटिंग्स के बारे में शिकायत नहीं करता है जब तक कि यह वैध टॉमल हो। क्या होता है यदि आप लिंकर को सीधे '-C लिंकर =' के साथ rustc पास करते हैं? – kazemakase

संबंधित मुद्दे