2016-12-06 11 views
0

私はこれによって混乱するかもしれない唯一のものだとは思わない。GO言語依存関係を使用してビルド

私は非常に単純なGoプログラムを持っていますが、唯一の依存関係はありません。

import (
    "fmt" 
    "time" 
    ) 

私は他の誰かがGOをインストールしていない場合、彼らはエラーを取得するように見える、しかし

(私はGOがインストールされているので)「myprogram.goを構築して行く」と、正常に動作バイナリを取得する使用。例については

open c:\go\lib\time\zoneinfo.zip: The system cannot find the path specified. 
panic: time: missing Location in call to Time.In 

私はビルドでサードパーティのライブラリを含めるために何が必要ですか?

私はあなたのコードのより完全な例がないとの依存関係

+0

の可能性のある重複した[は他のOS用の実行可能ファイルを配布するためのGoコンパイラを使用することが可能ですか?] (http://stackoverflow.com/questions/13967470/is-it-possible-to-use-the-go-compiler-to-distribute-a-executable-file-for-other) –

+1

あなたは行かないGoバイナリを実行するためにインストールされます。 zoneinfo.zipファイルについては、[time.LoadLocation](https://golang.org/pkg/time/#LoadLocation)のドキュメントを参照してください。 – JimB

答えて

0

を気にすることなく、任意のプラットフォーム上で実行されますそのバイナリを生成したいのですが、それは特定の問題に答えるのは難しいですが、私は、スタンドアロンのバイナリを生成するために行います次のとおりです。

少なくともlibcの依存関係のない静的なバイナリをビルドします
CGO_ENABLED=0 go build -v -a -ldflags '-s -w' ./... 

... zoneinfo.zip依存性はそのでカバーされないようです。

zoneinfo.zipファイルは、Go ...固有のものではありません.Googleは、システムにインストールされることを想定しています。執筆時点ではhttps://golang.org/src/time/zoneinfo_unix.go#L31

:ここでは、そのファイルのためのシステムフォルダをスキャンコードがある

var zoneDirs = []string{ 
    "/usr/share/zoneinfo/", 
    "/usr/share/lib/zoneinfo/", 
    "/usr/lib/locale/TZ/", 
    runtime.GOROOT() + "/lib/time/zoneinfo.zip", 
} 
+0

ありがとうございました。 – user3888307