2011-05-14 8 views
5

जब एक OCaml परियोजना जो जीसीसी के साथ ocamlc लिए सी ++ मानक पुस्तकालय (जैसे LLVM के OCaml बाइंडिंग) -cc g++ तर्क का उपयोग की आवश्यकता होती है पुस्तकालयों के खिलाफ लिंक संकलन> = 4.4 उत्पन्न अत्यंत वर्बोज़ चेतावनी फार्म के वमन:सी ++ पुस्तकालयों के साथ लिंक करते समय ओसीएमएल संकलन में जी ++ बहिष्करण चेतावनियों को कैसे दबाया जा सकता है?

warning: deprecated conversion from string constant to ‘char*’ 

कैसे क्या इन चेतावनियों को हटाना संभव है?

उत्तर

6

समस्या ocamlc से उत्पन्न होती है जो इंटरमीडिएट सी कोड उत्पन्न करती है जो जीसीसी के नए संस्करणों द्वारा सी ++ मोड में संकलित होने पर चेतावनियों को ट्रिगर करती है। लेकिन इस जेनरेट कोड को सी ++ के रूप में संकलित करने की आवश्यकता नहीं है। एक लिपटे सी ++ लाइब्रेरी के खिलाफ इमारत के इस सामान्य मामले के लिए -cc g++ पास करने का एकमात्र कारण यह सुनिश्चित करना है कि सी ++ मानक लाइब्रेरी निर्भरताएं बनाई गई हों। सरल समाधान है, जो ocamlc मध्यवर्ती कोड संकलन के लिए सी ++ सामने के अंत का उपयोग कर बचा जाता है, बस है:

-cclib -lstdc++ 

जो libstdc++ साथ उत्पन्न सी कोड जोड़ने बलों, जबकि अभी भी सादा सी मोड में संकलन।

+0

afaik सी कंपाइलर के साथ ओकैमक कोड को संकलित करना बेहतर है और लिंक करते समय '-cc g ++' का उपयोग करें (-lstdC++ पर्याप्त नहीं हो सकता है) – ygrek

+0

उचित बिंदु, हालांकि यह मेरे द्वारा किए गए सभी वातावरण में काम करता है। (जी ++ आम तौर पर सिर्फ एक रैपर होता है जो जीसीसी टूलचेन पर्यावरण को -lstdC++ जैसी चीजों को करने के लिए कॉन्फ़िगर करता है।) किसी भी विचार को कैसे रोकें -cc g ++ को केवल OCamlBuild का उपयोग करते समय एक लिंकर तर्क के रूप में पारित किया जाना चाहिए? – jrk

+1

'ध्वज ["ओकंपल"; "लिंक"; "मूल"] और परमाणु ["-cc"; "g ++"]' – ygrek

2

मुझे लगता है कि तुम सिर्फ

#pragma GCC diagnostic ignored "-Wwrite-strings" 

कर सकते हैं सी ++ में इस को दबाने के लिए।

+0

काम करना चाहिए यह इसे हल करने के बजाय अंतर्निहित समस्या को दूर करता है। गहरा मुद्दा OCaml की मानक लाइब्रेरी सी का उपयोग कर रहा था जो सी ++ के अनुकूल नहीं था। प्रश्न में स्रोत उपयोगकर्ता के स्वामित्व में नहीं हैं, लेकिन अंतर्निहित प्रणाली द्वारा, इसलिए चेतावनी दमन प्रागम्स जोड़ने के लिए उन्हें सभी को संशोधित करना अव्यवहारिक है। – jrk

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