使用build进行GO语言依赖

时间:2016-12-06 18:05:30

标签: go dependencies lang

我不认为我是唯一一个可能会对此感到困惑的人。

我有一个非常简单的Go程序,唯一的依赖是。

import (
    "fmt"
    "time"
   )

我用过"去构建myprogram.go" ,并获得运行良好的二进制文件(因为我安装了GO)

但是,如果其他人没有安装GO,他们似乎会出错。

例如:

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

在构建中包含第三方库需要做什么?

我希望生成一个可在任何平台上运行的二进制文件,而无需担心依赖关系

1 个答案:

答案 0 :(得分:0)

如果没有更完整的代码示例,很难回答具体问题,但我要做的是生成独立的二进制文件:

 CGO_ENABLED=0 go build -v -a -ldflags '-s -w' ./...

至少构建一个没有libc依赖关系的静态二进制文件......似乎不会涵盖zoneinfo.zip依赖关系。

zoneinfo.zip文件不是Go ... Go独有的,它希望它安装在系统上。以下是扫描该文件的系统文件夹的代码: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",
}