0

从 go1.10 开始,只允许编译器/链接器选项的安全列表。这些之外的任何选项都需要包含在环境变量中,例如 ubuntu#echo $CGO_LDFLAGS_ALLOW -Wl,-Bdynamic,--wrap=memcpy 更多信息: https ://github.com/golang/go/wiki/InvalidFlag

在目录 foo 我有一些从另一个目录栏导入包的 go 代码。这个 bar 目录有一些 cgo 代码,其中声明了 #cgo 标志。

当我执行“go build”时,它会从 foo 转到 bar 并执行“go build”,但由于 CGO_LDFLAGS_ALLOW 未在环境中设置而失败。

我不想让我的所有团队在他们的环境中明确设置这个环境变量。有没有办法可以在目录栏中的“开始构建”之前设置环境变量?

我尝试在 foo 的 Makefile 中设置环境变量,但问题是子目录中有许多 makefile 可能会尝试构建 bar。我不想在所有 makefile 中设置变量。

4

1 回答 1

0

所以我选择的方法是:

在 foo 目录中创建一个新文件,例如 Makefilevars,它有这个导出: export CGO_LDFLAGS_ALLOW -Wl,-Bdynamic,--wrap=memcpy 这个文件包含在所有需要构建 bar 的 makefile 中。

于 2019-07-19T22:05:18.067 回答