2010-11-24 14 views
21

मैं एक बड़े ढांचे के लिए बैकट्रैक कार्यक्षमता को कार्यान्वित करने की कोशिश कर रहा हूं, जिसका उपयोग विभिन्न प्लेटफार्मों और ओएस के लिए किया जाता है। उनमें से कुछ में, यह glibc के खिलाफ जुड़ा हुआ है, जबकि दूसरी तरफ, कुछ अलग (उदाहरण के लिए uclibc) का उपयोग किया जाता है। बैकट्रैक() फ़ंक्शन केवल पूर्व में मौजूद है।कैसे बताएं कि glibc का उपयोग किया जाता है

क्या यह बताने का कोई तरीका है कि glibc का उपयोग किया जाता है या नहीं? कोई # परिभाषित? मैं glibc मैनुअल में एक जवाब खोजने में असमर्थ था। मुझे पता है कि संकलन के दौरान मुझे लिंकिंग-टाइम जानकारी नहीं मिल सकती है, लेकिन मुझे लगता है कि फाइलों को अलग करना है। कम से कम बैकट्रैक कहीं घोषित किया जाना है। मैं संकलक को स्पष्ट झंडे को पारित करने के लिए मजबूर किए बिना इसे देखना चाहता हूं।

उत्तर

19

#defines __GNU_LIBRARY__ , __GLIBC__ features.h में (glibc-2.11 के साथ अपने सिस्टम पर 6, 2 और 11) और __GLIBC_MINOR__ रहे हैं।

28

सुविधाओं.h शामिल करें, इसमें आपको आवश्यक मैक्रोज़ शामिल हैं, उदा।

#define __GNU_LIBRARY__ 6 

/* Major and minor version number of the GNU C library package. Use 
    these macros to test for features in specific releases. */ 
#define __GLIBC__  2 
#define __GLIBC_MINOR__ 4 
+3

10 सेकंड न तो यहां और न ही वहां है। सुविधा से स्निपेट को शामिल करने के लिए आपको मेरा वोट मिलता है;) –

+0

बहुत बहुत धन्यवाद शॉन! –

+0

और मेरे द्वारा एक उचित हारने के लिए +1 ;-) – hirschhornsalz

4

पूर्वप्रक्रमक मैक्रो के लिए जांच की जा रही नहीं एक अच्छा समाधान है। uClibc और संभवतः अन्य libc कार्यान्वयन मैक्रोज़ को ग्लिब की नकल करने के लिए परिभाषित करता है (इसकी सभी ब्लोएटेड कार्यक्षमता प्रदान किए बिना) उन सभी कारणों से, जिनमें सभी ब्राउज़रों में उनके उपयोगकर्ता-एजेंट स्ट्रिंग्स में "मोज़िला" शामिल होता है: टूटे प्रोग्राम जो ग्लिब को देखने और लॉट को बंद करने की अपेक्षा करते हैं सुविधाओं के अगर वे इसे नहीं देखते हैं।

इसके बजाय आपको backtrace की जांच के लिए कॉन्फ़िगर स्क्रिप्ट लिखनी चाहिए और इसे उपलब्ध होने पर ही इसका उपयोग करना चाहिए।

+1

स्क्रिप्ट कॉन्फ़िगर करें किसी ऐसे प्रोजेक्ट के लिए उपयोगी समाधान नहीं है जिसे विंडोज और आईफोन के साथ-साथ लिनक्स लक्ष्यों पर भी निर्माण करने की आवश्यकता है। –

+0

@LoganPickup: मुझे नहीं लगता कि क्यों नहीं। लेकिन यदि आप उन बिल्ड सिस्टम का उपयोग करने पर जोर देते हैं जो उन लक्ष्यों पर कॉन्फ़िगर करने के लिए सक्षम नहीं हैं, तो आपके पास केवल हार्ड-कोडित कॉन्फ़िगरेशन परिणाम ('config.h', आदि) हो सकते हैं क्योंकि वे अनिवार्य रूप से सिंगल, कसकर नियंत्रित वातावरण हैं । –

+1

बहु मंच परियोजनाओं के लिए सीएमके का उपयोग करें। आप जो चाहते हैं वह सिस्टम आत्मनिरीक्षण है, प्रति स्क्रिप्ट को कॉन्फ़िगर नहीं करता है। सीएमके बहु मंच प्रणाली आत्मनिरीक्षण करता है – Joakim

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