2010-02-16 4 views
12

मुझे आश्चर्य है कि g++ कंपाइलर/लिंकर झंडे का पता लगाने का कोई तरीका है जहां बाइनरी-केवल लाइब्रेरी बनाने में उपयोग किया जाता है।क्या मैं निर्धारित कर सकता हूं कि कौन सा कंपाइलर/लिंकर झंडे जहां बाइनरी-केवल साझा लाइब्रेरी बनाने के लिए उपयोग किया जाता है?

उदाहरण के लिए एक तृतीय पक्ष साझा लाइब्रेरी हो सकती है (केवल .h/.so फाइलें हैं)।

तो मुझे लगता है कि मेरे स्वयं के एप्लिकेशन को संकलित और लिंक करते समय एक ही जी ++ झंडे का उपयोग करना एक अच्छा विचार होगा (जो बाइनरी-केवल तृतीय पक्ष लाइब्रेरी का उपयोग कर रहा है)।

विशेष रूप से मैं की तरह

  • -fno-इनलाइन संकलक झंडे के लिए पूछ रहा हूँ
  • -pthreads
  • -mtune = मेहराब
  • -O2

और यह भी यह होगा ब्याज की जो लिंकर झंडे का उपयोग किया गया है:

  • -fpic या -fPIC
  • -fexceptions
  • -pthreads

और इतने पर।

उत्तर

0

मुझे विश्वास नहीं है क्योंकि उस जानकारी के लिए ईएलएफ प्रारूप में कोई अनुभाग नहीं दिखता है। लिनक्स पर, यदि आप सभी जानकारी डंप करने के लिए 'readelf -a' का उपयोग करते हैं, तो फ़ाइल को इस तरह से कैसे मिला है इसके बारे में कुछ भी नहीं है।

1

ऐसा करने का कोई व्यवस्थित तरीका नहीं है। -pthreads का संकेत था कि आप पुस्तकालय को libpthread से लिंक कर चुके हैं या नहीं। पीआईसी/गैर-पीआईसी कोड के लिए, आप this आज़मा सकते हैं। अनुकूलन स्तर, ट्यूनिंग और दूसरों को निर्धारित करने के लिए बहुत कठिन होगा।

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

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