2011-12-12 14 views
5

मैं एक सी स्थैतिक पुस्तकालय वितरित करना चाहता हूं और जितना संभव हो सके आंतरिक कार्यान्वयन को छिपाना चाहता हूं। मैं अपने कोड पर एक कोड obfuscator का उपयोग कर रहा हूँ और यह एक इंसान के लिए प्रतीक असंगत बनाने के लिए बहुत अच्छी तरह से काम करता है। मैं एक्सकोड 4 का उपयोग कर रहा हूं जो मुझे लगता है कि जीसीसी जैसे झंडे हैं।स्थिर पुस्तकालय में ऑब्जेक्ट फ़ाइल नामों को कैसे छिपाना है?

मेरे समस्या यह है कि मेरे पुस्तकालय अभी भी पठनीय जानकारियां कि मैं छिपाने या मानव के लिए समझ से बाहर करना चाहते हैं शामिल हैं:, जब मैं .एक पर एनएम चलाने मैं अब भी देखें:

1- वस्तु फ़ाइल नाम प्रत्येक ऑब्जेक्ट फ़ाइल के नाम। (यानी myObect1.o myObject2.o आदि)। क्या इन नामों को मेरे .a से हटाने का कोई तरीका है?

2- फ़ाइल पथ: जब मैं अपनी लाइब्रेरी पर स्ट्रिंग चलाता हूं, तब भी मैं हेडर फ़ाइलों के साथ-साथ कुछ .c फ़ाइल पथ (# शामिल) के रूप में शामिल करता हूं। क्या इन्हें भी हटाने का कोई तरीका है। (जीसीसी ध्वज या अन्य रास्ता)?

धन्यवाद आप के लिए मदद,

बाबा

ps: मैं एनएम और तार के बारे में जानते हैं, लेकिन यदि आप किसी अन्य उपकरण के बारे में पता है या आप कुछ और मैं जाँच करनी चाहिए ठीक से मेरी में छिपा हुआ है सुझाव है कि कर सकते हैं। ए, सभी सुझावों का स्वागत है।

+1

देखें कि [जीएनयू स्ट्रिप] (http://linux.die.net/man/1/strip) जो भी आप चाहते हैं वह कर सकते हैं। –

उत्तर

2

SQLite के रूप में एक समामेलन वितरित करने पर विचार करें: http://www.sqlite.org/amalgamation.html। दूसरे शब्दों में, लाइब्रेरी के बजाय, एक एकल .o फ़ाइल और एक .h फ़ाइल वितरित करें।

आपको अपने आंतरिक कार्यों को स्थिर के रूप में एनोटेट करना होगा। यह संकलक को अनुकूलन के लिए और अवसर भी प्रदान करेगा। लुआ इस तरह की टिप्पणियों का उपयोग करता है। उदाहरण के लिए देखें http://www.lua.org/source/5.1/ldo.h.html। एक समामेलन के लिए, LUAI_FUNC को स्थिर के रूप में परिभाषित किया गया है।

+0

धन्यवाद यह काम करता है! हालांकि एक सवाल: आंतरिक कार्यों को स्थिर के रूप में घोषित करने का क्या फायदा है (उनके नाम पहले से ही अप्रचलित हैं और इस प्रकार गैर मानव पठनीय नहीं हैं)। आईओएस जैसे एम्बेडेड प्लेटफॉर्म पर उदाहरण के लिए किसी भी समस्या को स्थैतिक प्रेरित करने के रूप में कार्य को स्थिर घोषित कर सकते हैं? मैं स्थिर कीवर्ड के उपयोग से इतना परिचित नहीं हूं और मैंने एम्बेडेड प्लेटफॉर्म पर वैरिएबल घोषित करने की सीमाओं के बारे में सुना है। क्या यह कार्यों के लिए समान होगा? – Baba

+0

@ बाबा, जैसा कि मैंने कहा, स्थिर कार्य संकलक को बेहतर कोड उत्पन्न करने की अनुमति देता है, यहां तक ​​कि इन्हें भी रेखांकित करता है। स्थिर कार्य वास्तव में स्थिर चर के समान नहीं हैं। वे केवल इस तथ्य को साझा करते हैं कि वे मॉड्यूल के बाहर दिखाई नहीं दे रहे हैं। नहीं, स्थिर कार्यों को एम्बेडेड प्लेटफ़ॉर्म में कोई समस्या नहीं देनी चाहिए। – lhf

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