在Linux中运行Google Go二进制文件的参数无效

时间:2015-07-10 08:05:29

标签: linux go

我在Go中编写了一个非常小的应用程序,并将AWS Linux AMI配置为托管。该应用程序是一个非常简单的Web服务器。我按照官方文档中的说明在Linux上安装了Go。使用“go run main.go”命令调用时,我的应用程序按预期运行。

但是,当我尝试手动启动因运行“go install”而生成的二进制文件时,收到“无效参数”错误。相反,如果我运行“go build”(我理解基本上是相同的,有一些例外),然后调用生成的二进制文件,应用程序将按预期启动。

我正在$GOPATH/bin/文件夹中调用该文件,如下所示:

./myapp

我还在$GOPATH/bin变量中添加了$PATH。 我还将二进制文件从$GOPATH/bin/移动到src文件夹,并从那里成功运行它。

Linux实例是一个64位实例,我已经安装了相应的Go 64位安装。

1 个答案:

答案 0 :(得分:1)

go build构建所有(即所有依赖包),然后生成生成的可执行文件,然后丢弃中间结果(请参阅this以获取替代方案;还要考虑仔细阅读go help buildgo help install)的输出。

相反,

go install使用依赖包的预编译版本(如果找到它们);否则它也会构建它们,并安装在$PATH/pkg下。因此,我可能会建议go install看到一些过时的软件包,这会破坏生成的构建。

考虑在go install ./...中投放$GOPATH/src。 或者对于每个依赖包可能只是选择性go install uri/of/the/package,然后重试构建可执行文件。