2010-12-06 10 views
7

मैं सभी सीएनएस फाइलों को सभी लिनक्स वितरणों पर काम करने के लिए कैसे संकलित कर सकता हूं। मशीन जिसे मैं संकलित करूँगा वह उबंटू 10.10सभी लिनक्स वितरण के लिए संकलित सी ++

यदि मैं उन्हें उबंटू 10.10 पर संकलित करता हूं, तो क्या वे उबंटू, फेडोरा, डेबियन, गैर डेबियन डिस्ट्रोज़ आदि जैसे अन्य Distros पर काम करेंगे?

उत्तर

7
% gcc -o foo foo.c -static 

जिसके परिणामस्वरूप द्विआधारी सबसे distros पर काम करना चाहिए, यह देखते हुए कि यह एक ही वास्तुकला (64 बिट, 32 बिट, हाथ, MIPS आदि) पर चलता है।

मुख्य बिंदु यह है: चूंकि आप नहीं जानते कि पहले से ही लक्ष्य प्रणाली पर क्या पाया जा सकता है, आपको या तो आप जिस बाइनरी को शिपिंग कर रहे हैं या किसी प्रकार के "चिड़ियाघर" वातावरण में आप जो भी कर सकते हैं उसे बंडल करना होगा बाहरी libs को भी तैनात करें (सामान जो स्थिर रूप से लिंक नहीं किए जा सकते हैं) और फिर सिस्टम libs के बजाय अपने तैनात libs का उपयोग करने के लिए किसी प्रकार का एक रैपर है।

+2

वह सी के लिए काम करेगा, लेकिन सी ++ नहीं। देखें http://www.trilithium.com/johan/2005/06/static-libstdc/ –

3

हालांकि @किरा उत्तर शायद आपके मामले के लिए काम करेगा, यह सबसे अच्छा समाधान नहीं है। अधिकांश लिनक्स डिस्ट्रोज़ में पैकिंग सिस्टम होते हैं जो आपके लिए निर्भरताओं को पुनर्प्राप्त करते हैं।

आप लिनक्स सॉफ्टवेयर है जो अन्य लोगों के बक्से पर प्रयोग किया जाता है लिखने के बारे में गंभीर हैं, तो आप 'ग्नू Autotools' जो चलाता है इस पर गौर करने की आवश्यकता होगी 'कॉन्फ़िगर & & मेकअप सब & & बनाने स्थापित' बात जो आप अब तक एक से अधिक बार भाग लेंगे!

+0

उम्म, परियोजना ओपन सोर्स नहीं है? – Daniel

+0

@ डैनियल आप अभी भी Autotools का उपयोग करके बेहतर हो जाएंगे, भले ही आप कोड को मुफ्त में नहीं दे रहे हैं! अन्यथा जब आप अपने कोड पुस्तकालयों को बदलने पर निर्भर करते हैं तो आप अपना जीवन कठिन बना देंगे, लेकिन जैसा कि मैंने कहा था कि @किरा विचार सबसे अधिक संभावना है जो आप चाहते हैं। –

+0

यदि उसके प्रोजेक्ट को ऑटोोटूल की आवश्यकता है, जो जीपीएल के तहत है, भले ही यह वितरण से पहले अपने सॉफ्टवेयर का निर्माण करने के लिए है, तो क्या यह अपने सॉफ्टवेयर के लिए जीपीएल-असंगत लाइसेंस के तहत कानूनी है? (यह एक ईमानदार सवाल है, जीपीएल flamebait नहीं।) – gotgenes

1

बशर्ते आप केवल लिनक्स मानक बेस में सूचीबद्ध पुस्तकालयों का उपयोग करें, एक गतिशील निष्पादन योग्य ठीक होना चाहिए।

अन्य पुस्तकालयों के लिए, या तो उनके स्थिर संस्करणों के साथ लिंक, या गतिशील पुस्तकालयों को जहाज; मैं पूर्व पसंद करते हैं।

मैं व्यक्तिगत रूप से, सी पुस्तकालय स्थिर-लिंकिंग से बचने की सलाह देते हैं, क्योंकि यह यह काम कर रहा है, उदाहरण के एनएसएस सामान के लिए द्वारा प्रदान की कुछ उपयोगी कार्यक्षमता से बचाता है ..

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