1.5+

2015-10-13 26 views
6

गोलांग संस्करण < 1.5 के साथ स्थिर रूप से जुड़े गोलांग निष्पादन योग्य बनाने के लिए कैसे करें - वहां बहुत से स्थिर लिंकिंग उदाहरण, पोस्ट और व्यंजन हैं। > = 1.5 के बारे में क्या? (Google खोज ने मेरे खोज शब्दों के लिए कोई उपयोगी परिणाम नहीं लौटाया है।) किसी को भी एक मूलभूत लिंक वाली बाइनरी का उत्पादन करने के बारे में कोई सिफारिश है जिसे मूल आरकेटी (कोरओएस) कंटेनर के अंदर निष्पादित किया जा सकता है?1.5+

मेरे जाने:

$go version 
go version go1.5 linux/amd64 

जब मैं अपने कंटेनर चलाने का प्रयास:

sudo rkt --insecure-skip-verify run /tmp/FastBonusReport.aci 

मैं:

[38049.477658] FastBonusReport[4]: Error: Unable to open "/lib64/ld-linux-x86-64.so.2": No such file or directory 

सुझाव है कि कंटेनर में निष्पादन इस पर निर्भर करता है lib और इसलिए स्थिर नहीं है।

मेरी प्रकट लगता है:

cat <<EOF > /tmp/${myapp}/manifest 
{ 
    "acKind": "ImageManifest", 
    "acVersion": "0.9.0", 
    "name": "${lowermyapp}", 
    "labels": [ 
     {"name": "os", "value": "linux"}, 
     {"name": "arch", "value": "amd64"} 
    ], 
    "app": { 
     "exec": [ 
      "/bin/${myapp}" 
     ], 
     "user": "0", 
     "group": "0" 
    } 
} 
EOF 

मेरे आदेश द्विआधारी निर्माण करने के लिए लाइन लगता है:

go build ${myapp}.go 

यह article कुछ उदाहरण golang < 1.5 है। और फिर CoreOS साइट पर यह getting started आलेख है।

+0

आप हमें कैसे आप अपने अनुप्रयोग का निर्माण कर रहे दिखा सकते हैं? प्रक्रिया वास्तव में नहीं बदला है। – JimB

+0

और मैंने लेखों के कुछ लिंक जोड़े। – Richard

+4

क्या आपने 'CGO_ENABLED = 0' सेट किया है? – JimB

उत्तर

8

मुझे अपने प्रश्न का उत्तर देने से नफरत है। टिप्पणियां सही हैं CGO_ENABLED=0 go build ./... ऐसा लगता है कि यह चाल चल रही है।

हालांकि यह मूल प्रश्न का हिस्सा नहीं था, एक बार प्रोग्राम आरटीके कंटेनर में निष्पादित करना शुरू कर दिया गया था, यह उचित DNS अनुरोध नहीं कर सका। तो कुछ और भी चलना चाहिए।

+0

क्या यह मैक ओएस एक्स (डार्विन) पर चल रहा है? मैंने सोचा कि यह एकमात्र मंच था जहां डीएनएस लुकअप स्वयं गो द्वारा नहीं किया जाता है। – Volker

+1

@ वोल्कर: nsswitch.conf पर जाने पर डीएनएस लुकअप किए जाते हैं, लेकिन कागो रिज़ॉल्यूवर अभी भी जुड़ा हुआ है, इसलिए जब आवश्यक हो तो इसका उपयोग किया जा सकता है (रनटाइम पर आगे और पीछे स्विच करने के लिए 'GODEBUG = netdns = 'विकल्प भी है, जो कि दोनों उपलब्ध हैं) – JimB

+1

@ रिचर्ड आपको अपने कंटेनर में अपना/etc/hosts जोड़ना होगा, जैसे वे [यहां] (https: // github।कॉम/कोरोस/आदि/ब्लॉब/मास्टर/स्क्रिप्ट/बिल्ड-एसीआई # एल 64), आदि परियोजना में। –

5

स्टेटिक लिंकिंग:

जाओ 1.5:

go build -ldflags "-extldflags -static" ... 

जाओ 1.6 के साथ मैं का इस्तेमाल किया था:

go build -ldflags "-linkmode external -extldflags -static" ...