2013-03-21 4 views
17

GO मानक पुस्तकालय में, वहाँ मेरी गो स्थापना के तहत स्रोत फ़ाइलें हैं:गो में .a फाइलें क्या हैं?

C:\Go\pkg\windows_amd64 

क्या .a हैं:

C:\Go\src\pkg 

स्रोत फ़ोल्डर के अंतर्गत संकुल यहाँ में फ़ाइलों को ए से मेल खाती है फाइलें? वे किस लिए उपयोग किए जाते हैं और वे कैसे उत्पन्न होते हैं। मैंने देखा, जब मैं go get libraryhostedingithub करता हूं तो वे स्वचालित रूप से जेनरेट हो जाते हैं।

उत्तर

19

वे संकुल संकलित हैं। जब आप import foo/bar लिखते हैं तो ये फ़ाइलें आप संदर्भित कर रहे हैं। यह $GOROOT/pkg/$GOOS_$GOARCH/foo/bar.a और $GOROOT/src/foo/bar/*.go को संदर्भित करता है।

इन फ़ाइलों में डीबग प्रतीकों और स्रोत जानकारी के साथ संकलित पैकेज बाइनरी कोड शामिल है।

+0

क्या इसका मतलब यह है कि पुस्तकालयों को पूरी तरह से संकलित पैकेज रूप में वितरित करना संभव है? मुझे कहीं से पढ़ना याद है, स्रोत स्रोतों के माध्यम से गो में पुस्तकालयों को वितरित करना केवल संभव है। – Dante

+4

सिद्धांत रूप में, हाँ आप ऐसा कर सकते हैं। लेकिन याद रखें कि वे विशिष्ट प्लेटफार्मों के लिए संकलित हैं। तो एक मंच के लिए एक पैकेज को किसी अन्य प्लेटफ़ॉर्म पर लक्षित एक निर्माण चक्र में सफलतापूर्वक आयात नहीं किया जा सकता है। अंत में, स्रोत वितरण एक परेशानी से बहुत कम है। – jimt

+1

@ जॉन नोवरमोर अभी, w/o स्रोत का निर्माण समर्थित नहीं है हालांकि यह संभव होना चाहिए; आवश्यक सभी जानकारी लाइब्रेरी फ़ाइल (.a) में शामिल है – fuz

4

करने के लिए docs अनुसार:

तो DIR जाओ पथ में सूचीबद्ध एक निर्देशिका, DIR में स्रोत के साथ एक पैकेज है/src/foo/बार के रूप में "foo/बार" आयातित और किया जा सकता है इसके संकलित रूप "डीआईआर/पीकेजी/GOOS_GOARCH/foo/bar.a" (या, gccgo, "डीआईआर/पीकेजी/gccgo/foo/libbar.a" के लिए स्थापित)।

तो यह सिर्फ संकलित/स्थापित पैकेज प्रतीत होता है।

4

गो .a पैकेज ऑब्जेक्ट संग्रह फ़ाइलें go tool pack कमांड द्वारा बनाई गई हैं: Command pack

2

@peterSO के रूप में, ".a पैकेज ऑब्जेक्ट संग्रह फ़ाइलें go tool pack कमांड द्वारा बनाई गई हैं: Command pack।"

हालांकि, और भी अधिक स्पष्ट हो तुम Linux में या 7zip की तरह एक कार्यक्रम tar -xvf आदेश में एक नियमित रूप से संकुचित tar छवि के रूप में इन फ़ाइलों को कॉपी कर सकते हैं और .tar.gz करने के लिए एक्सटेंशन का नाम बदलें और खोलने के लिए उन्हें, या आप go tool pack उपयोग कर सकते हैं जो प्रभावी रूप से वही है।

अंदर आप संकलित ऑब्जेक्ट फाइलें ".o" देखेंगे जिसमें आर्किटेक्चर संकलित कोड और डीबग प्रतीकों, और पैकेज परिभाषा फ़ाइल (__। पीकेजीडीईएफ) शामिल है जिसमें पैकेज मेटाडेटा है।

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