【问题标题】:Appengine Go devserver build issueAppengine Go 开发服务器构建问题
【发布时间】:2015-03-14 10:22:53
【问题描述】:

我已将 go 版本从 1.4.1 更新到 1.4.2,并且现在使用 appengine 最新的 go sdk 1.9.18,当我尝试运行现有项目时出现以下错误,

google_appengine/goroot/pkg/darwin_amd64/appengine.a:对象是 [darwin amd64 go1.4.2 X:precisestack] 预期 [darwin amd64 go1.4.1 (appengine-1.9.18) X:precisestack]强>

我知道使用现有版本构建文件并尝试使用新版本运行存在问题,请问我该如何解决这个问题?

谢谢!

【问题讨论】:

  • appengine-1.9.19 使用 go1.4.2 二进制文件,所以升级包应该足够了

标签: google-app-engine go


【解决方案1】:

最新的 Go 版本是 1.4.2,但 AppEngine Go SDK 使用与 1.4.1 版本捆绑的 Go 运行时!

这意味着您不能使用“外部”1.4.2 Go 库来编译您的源代码。如果您在 Go 中为 AppEngine 开发应用程序,您甚至不能(不应该)使用任何 Go 库,除了捆绑在 Go AppEngine SDK 中的库!

事实上,您不必这样做。 SDK 包含一个类似于go 工具的goapp 命令,您可以使用它在本地运行和测试您的应用程序,您可以将其部署到生产环境。要在本地运行/测试您的应用,请使用 goapp serve 命令,要将其部署到生产环境,请使用 goapp depploy 命令。

因此,您应该删除使用 Go 1.4.2 编译的所有包对象,并仅使用 goapp(SDK 的一部分)命令来运行/测试/部署您的应用程序。

请注意,您甚至不必安装任何包对象,因为 goapp deploy 命令会以 source 形式上传您的应用,并将其编译为 appengine 服务器上的可执行本机二进制文件。

【讨论】:

  • 感谢您的回答,我确实使用 goapp 命令来运行和部署我的应用程序,但我使用 GoSublime 进行开发,我已将其配置为在文件保存上构建,所以现在当我设置 GOROOT到 appengine sdk 路径,我收到此错误“go build runtime: darwin/amd64 must be bootstrapped using make.bash”,对此有什么想法吗?我现在可以编译 go 文件了
  • 我已经解决了这个问题,所以现在源代码是用 appengine go runtime 编译的,但仍然遇到同样的问题
  • @Ramesh 这是因为你已经有了用 Go 1.4.2 编译的包对象。删除所有包对象。如果您不知道哪个是 1.4.2,请尝试全部删除,或下载 Go AppEngine SDK 的全新副本。
猜你喜欢
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
相关资源
最近更新 更多