2012-01-05 5 views
9

मुझे सटीक है कि मैं इस प्रश्न को अपने x86 (64 बिट) लिनक्स बॉक्स के लिए "मूल" विकास में प्रतिबंधित करता हूं। कोई एम्बेडेड या गैर-x86 आर्किटेक्चर नहीं।लिनक्स पर x86 सी ++ विकास के लिए वैकल्पिक टूलचेन्स क्या (काम कर रहे हैं) मौजूद हैं?

चूंकि मैं एक सी ++ उपयोगकर्ता हूं और सी ++ पुनर्जागरण है, मैं वर्तमान में व्यक्तिगत परियोजनाओं के लिए सी ++ का उपयोग कर रहा हूं।

अभी मैं मजबूत, पारंपरिक लिनक्स/जीसीसी/टूलचेन बनाने का उपयोग कर रहा हूं।

  • '' 'जीसीसी', के लिए एक बहुत तेजी से एक विकल्प के रूप 'बजना', दे रही है बेहतर त्रुटि संदेश:

    लेकिन ब्लॉग पोस्ट और एसओ प्रश्नों के माध्यम से, मैं हाल ही में नई होनहार उपकरणों के बारे में पता चला

  • '' 'ld' 'के स्थान पर, बहुत तेजी से

उन उपकरणों कम जाना जाता है और यह भी उनके बारे में पता नहीं आसान है कर रहे हैं के रूप में' सोना ''।

क्या अन्य दिलचस्प कम ज्ञात टूल्स हैं जिन्हें मुझे अवगत होना चाहिए? उदाहरण के लिए जीडीबी या पसंद के लिए विकल्प? (मैं cmake का भी उपयोग कर रहा हूं)

मैं पहले विकास की आसानी की तलाश कर रहा हूं, फिर विकास की गति में सुधार। कोई अन्य सुधार स्वागत है।

यदि संभव हो तो मुफ्त उपकरण।

+1

वहाँ इंटेल की आईसीसी संकलक जो एक डिबगर और अन्य उपकरणों के साथ आता है करने के लिए स्विच करने की योजना है। यह लिनक्स पर गैर-वाणिज्यिक उपयोग के लिए स्वतंत्र है, अन्यथा इसकी लागत होती है। –

+0

@ पॉलर धन्यवाद पॉल। निस्संदेह मैं मुफ्त उपकरणों में अधिक रुचि रखता हूं, और वह जो पुराने लोगों पर उल्लेखनीय सुधार लाता है। (इंटेल ने निष्पादन की गति जोड़ने का दावा किया है, लेकिन मुझे लगता है कि यह सब कुछ है) – Offirmo

+0

जैसा कि मैंने अपनी टिप्पणी में कहा था, आईसीसी * लिनक्स पर गैर-वाणिज्यिक उपयोग के लिए स्वतंत्र है। अच्छी गुणवत्ता कोड पीढ़ी के साथ यह आमतौर पर नई सीपीयू सुविधाओं (स्पष्ट कारणों से) के लिए समर्थन करने वाला पहला संकलक है, उदाहरण के लिए नवीनतम एसएसई, एवीएक्स, आदि –

उत्तर

5

आप

सी के लिए (लेकिन सी ++) प्रोग्रामिंग (सिर्फ अपने $PATH अंदर एक सिमलिंक जोड़कर एक संकलक कैश बेकार रखता से बचने में सक्षम है, और पारदर्शी रूप से, एक ही g++ आदेश के माध्यम से प्रयोग करने योग्य) ccache द्वारा रुचि हो सकती है , आपको tinycc से रुचि हो सकती है - जो बहुत तेज़ी से संकलित होती है (लेकिन धीरे-धीरे चलने वाली बाइनरी कोड उत्पन्न करती है)।

कोडिंग करते समय, Boehm's garbage collector का उपयोग किया जा सकता है। C12+ में इसका उपयोग करने से संबंधित this question देखें।

और अपनी मेमोरी लीक डीबग करने के लिए valgrind का भी उपयोग करें।

कभी-कभी dlopen के साथ एक साझा ऑब्जेक्ट को गतिशील रूप से लोड करना इंटरस्टिंग होता है। C12+ में dlsym -ed प्रतीकों extern "C" होना चाहिए। मुझे कभी-कभी फ्लाई पर सी या सी ++ कोड उत्पन्न करना, इसे संकलित करना, और dlopen मॉड्यूल करना पसंद है।

भवन के लिए, अन्य बिल्डरों की जांच करने पर विचार करें, जैसे उदा। omake

संकलन करते समय, -Wall (और शायद -Wextra) को संकलक को ध्वजांकित न करें।नया लिंक टाइम ऑप्टिमाइज़ेशन (CXX=g++ -flto के साथ Makefile में) दिलचस्प हो सकता है (लेकिन निष्पादन योग्य गति में शायद 10% की वृद्धि के लिए संकलन समय पीड़ित है)।

यदि आपकी स्रोत कोड फ़ाइलें सभी समान C++ शीर्षलेख साझा करती हैं, तो उस शीर्षलेख को पूर्व-संकलित करना सार्थक है।

नया (जैसे सी की तुलना में बेहतर ++) भाषाओं OCaml और हास्केल की तरह मौजूद हैं, लेकिन यह भी जाओ और डी

भी पालतू परियोजनाओं के लिए GIT की तरह एक संस्करण नियंत्रण प्रणाली का उपयोग करें।

क्यूटी एक अच्छा सी ++ ढांचा है, विशेष रूप से इसकी ग्राफिकल टूलकिट के लिए।

Wt आपको सी ++ में बहुत तेज़ी से वेब इंटरफेस में कोड करने में सक्षम बनाता है।

दोनों जीसीसी & जीडीबी अभी भी विकसित हो रहे हैं। नवीनतम संस्करणों का उपयोग करना न भूलें (उदाहरण के लिए जीसीसी के लिए 4.6, जीडीबी के लिए 7.3) जो पहले के लोगों में बड़े सुधार प्रदान करते हैं।

प्लगइन के माध्यम से अपनी विशेष आवश्यकताओं के लिए अपने जीसीसी कंपाइलर को विस्तारित या अनुकूलित करने पर विचार करें या अभी तक MELT एक्सटेंशन का उपयोग कर बेहतर करें।

+0

ठीक है यहां बहुत सारे जवाब हैं (मैं भाषा बदलने के रूप में नहीं जाऊंगा, चलो इस सवाल को ट्रैक पर रखें)। tinycc केवल सी है, बहुत बुरा है। मुझे कचरा कलेक्टर में दिलचस्पी है, एक नज़र डालें। – Offirmo

+0

@ बेसिल स्टैरेनकेविच - उल्लेख करने के लिए +1 - सभी, सभी बिल्डों के लिए आवश्यक है। –

+0

मैंने एमईएलटी के बारे में कभी नहीं सुना, बहुत दिलचस्प लग रहा है, धन्यवाद! – Offirmo

4

मैं दो विकल्पों के बारे में पता: क्योंकि वे इतना व्यापक जांच कर नहीं है

दोनों मेकअप, क्योंकि वे तेजी से बड़ा परियोजनाओं के लिए कर रहे हैं, जगह ले सकता है।

+0

+1 बहुत दिलचस्प, धन्यवाद। "मेक बनाम टुप" आशाजनक लग रहा है। क्या आप इसे स्वयं इस्तेमाल करते हैं? अब हमें इसे cmake के लिए एक टप जनरेटर की आवश्यकता है। मैं देखता हूं कि इस दिशा में कुछ प्रयास हैं। – Offirmo

+0

@ ओफर्मो मेरा सहयोगी टप से स्विच करने के लिए काम कर रहा है, और उसने कुछ 30% सुधार का उल्लेख किया। –

1

टूलचेन के हिस्से को बदलने के लिए मैं waf की सलाह देता हूं जो तेज़ है और इसमें एक छोटा पदचिह्न है। समर्थन भी काफी अच्छा है।

मैंने सोने की कोशिश की है जो कि एलडी से तेज़ नहीं था, लेकिन ऐसा लगता है कि यह वादा करता है। हालांकि, मैंने पिछली बार जांच की है, हालांकि यह वास्तव में बनाए रखा प्रतीत नहीं होता है।

क्लैंग काफी आशाजनक प्रतीत होता है, लेकिन मैंने इसे उत्पादन प्रोजेक्ट में नहीं देखा है। मैं योजना बना रहा हूं, क्योंकि इसकी अच्छी तरह से विचार डिजाइन वास्तव में तेजी से विकास की ओर जाता है। मैं इसे उपयोग करने के लिए 11 ^^

सी ++ my2c

+1

गोल्ड पर एक जीसीसी एमईएलटी ट्यूटोरियल होगा, लेकिन अब अभ्यास में काफी परिपक्व है। Google में गोल्ड में सक्रिय रुचि है। –

+1

वर्तमान में, जीसीसी 4.6 में क्लैंग 3.0 –

+0

की तुलना में थोड़ा बेहतर सी ++ 11 समर्थन लगता है, मैं फिलहाल ओएसएक्स पर एलएलवीएम जीसीसी (मूल रूप से क्लैंग) का उपयोग कर रहा हूं और मुझे संकलन और सामान्य विकास के लिए यह वास्तव में तेज़ लगता है। एक्सकोड में, क्लैंग लगातार पृष्ठभूमि में प्रतीक तालिकाओं का निर्माण कर रहा है जो कोड को उत्तरदायी और प्रासंगिक रूप से जागरूक बनाता है और जैसा कि पहले उल्लेख किया गया है, संकलन/निर्माण समय को कम करता है। –

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