【问题标题】:Building CGO with newer Go on Travis在 Travis 上使用更新的 Go 构建 CGO
【发布时间】:2020-11-12 13:09:09
【问题描述】:

我需要用 Travis 构建一个 Go(1.13+ 由于模块)二进制文件。诀窍是,我需要使用 CGO。

因此,我有一个 language: cpp 和 Focal 配置。不过,Travis 的默认打包版本是 Go 1.11。

所以我尝试安装 Go 1.13:

  • 使用 apt:
Setting up golang (2:1.13~1ubuntu2) ...
  • 使用给我:
unset GOOS;
unset GOARCH;
export GOROOT='/home/travis/.gimme/versions/go1.13.1.linux.amd64';
export PATH="/home/travis/.gimme/versions/go1.13.1.linux.amd64/bin:${PATH}";
go version >&2;
export GIMME_ENV="/home/travis/.gimme/envs/go1.13.1.env"

当我尝试调用这些特定版本时出现错误:

compile: version "go1.11.1" does not match go tool version "go1.13.1"

这可能是由于 PATH 和 Travis-Go 中的其他自定义,因为:

$ which go
/home/travis/.gimme/versions/go1.11.1.linux.amd64/bin/go

当尝试通过以下方式修复PATH 时出现相同错误时,它甚至会失败:

- export PATH="/home/travis/.gimme/versions/go1.13.1.linux.amd64/bin:${PATH}"
- go build

有谁知道如何覆盖默认的 Travis Go 版本或至少反向 Travis Go-changes 以便可以使用 apt Go?

编辑

添加了更多 Travis 实例的示例输出。

【问题讨论】:

  • 您的模块(或其依赖项之一)将 go1.13.1 定义为编译所需的最低版本。检查你的模块文件。
  • 这是明确且正确的。这就是我在第一句话中提到的
  • 嗯,你没有那么明确。你的假设是正确的。如果您在特定配置中向我们提供 PATH 的输出,尤其是 which go 的输出,那将更有帮助。
  • 很公平。现在试着更具体一些。
  • 不确定是否可以导出 PATH。试试- PATH="/home/travis/.gimme/versions/go1.13.1.linux.amd64/bin:${PATH}" go build

标签: go travis-ci cgo


【解决方案1】:

这当然是一个非常明显的解决方法。

还必须例如设置:

env:
  global:
    - GOROOT='/home/travis/.gimme/versions/go1.13.1.linux.amd64'

仍然会感谢任何使这不那么老套的解决方案。

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多