【发布时间】:2015-08-20 23:07:29
【问题描述】:
我正在编写一个小型围棋程序。我希望它可以在不同的操作系统上运行,所以我希望使用 go run 而不是包含已编译的文件。问题是它使用了标准库之外的包。我不想依赖拥有包裹的人。我可以使用
package main
import "os/exec"
func main() {
_ := exec.Command("go", "get","github.com/user/library").Run()
}
但是到那时导入它已经太晚了。我可以看到三个解决方案。
制作包装脚本。
交叉编译
让用户去做
但是我真的很想安装然后导入,有什么办法吗?
【问题讨论】:
-
这对我来说毫无意义。 a)你真的不应该像那样使用
go runb)如果你希望它与go run一起运行,这意味着go已经安装,所以他们可以go get你的程序,它会得到并安装任何东西需要。 -
交叉编译。
GOOS=linux ./make.bash在 Go 安装的根目录下,然后是GOOS=linux go build github.com/me/foo。交叉编译支持对于纯 Go 程序来说非常好,你不能像那样在运行时加载包。 -
哈哈,这是对 exec 命令的一个非常有创意的用法。自编译 go bins。这可能是可能的,但您需要两个可执行文件:一个使用依赖项设置 $GOPATH,另一个是实际程序。哦,用户将需要一个有效的 go 工具链。分发cross compiled 二进制文件可能会更好
-
创造力加1