我在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位安装。
答案 0 :(得分:1)
go build
构建所有(即所有依赖包),然后生成生成的可执行文件,然后丢弃中间结果(请参阅this以获取替代方案;还要考虑仔细阅读go help build
和go help install
)的输出。
go install
使用依赖包的预编译版本(如果找到它们);否则它也会构建它们,并安装在$PATH/pkg
下。因此,我可能会建议go install
看到一些过时的软件包,这会破坏生成的构建。
考虑在go install ./...
中投放$GOPATH/src
。
或者对于每个依赖包可能只是选择性go install uri/of/the/package
,然后重试构建可执行文件。