从这里的示例开始:https://github.com/PiotrSikora/bazel-zig-cc/blob/main/rules/rules_go.bzl

我试图扩展它以添加以下内容:

  1. 用于Linux目标的相同标志
  2. "-L"和"-w"代表BSD目标
  3. 为所有目标添加"-trimpath"

然而,我甚至连达到(1)都有困难.以下是我的代码:

_MACOS_GC_LINKOPTS = ["-s", "-w", "-buildmode=pie","-trimpath"]
_LINUX_GC_LINKOPTS = ["-s", "-w", "-buildmode=pie","-trimpath"]

def go_binary(**kwargs):
    kwargs["gc_linkopts"] = select({
        "@platforms//os:macos": _MACOS_GC_LINKOPTS,
        "@platforms//os:linux": _LINUX_GC_LINKOPTS,
        "//conditions:default": [],
    }) + kwargs.pop("gc_linkopts", [])
    go_binary_rule(**kwargs)

我得到的错误是:

flag provided but not defined: -trimpath

推荐答案

gc_linkopts中的选项被传递给Go linker.-trimpath是顶层go驱动程序的一个选项,rules_go绕过底层编译器而不是链接器.

Go相关问答推荐

有没有更简单的方法在Go中编写这个逻辑?

如何模拟嵌入. FS?

Go:嵌入类型不能是类型参数""

Kafka架构注册表-Broker:Broker无法验证记录

Fizz对Gin的OpenAPI生成器正在重命名类型

Golang校验器包:重命名字段错误处理

当填充通道的函数调用未嵌入 goroutine 时,为什么我会遇到死锁?

如何在 gocql 中设置最大池大小?

上传图片失败,出现错误dial tcp: lookup api.cloudinary.com: no such host

Golang代码判断第一个词是否可以从第二个词形成

无法使用 gocsv 读取引用字段

如何在时间范围内规范化数组的元素?

golang pic.ShowImage 为什么它不生成图像而是向我发送base64值

Golang ACMEv2 HTTP-01 挑战不挑战服务器

httprouterhttp.HandlerFunc() 是如何工作的?

如何在gorm中处理多个查询

如何在测试中传递用户名和密码等参数

try 创建新的 etcdv3 客户端时出现pc error: code = Unavailable desc = error reading from server: EOF

Go 泛型是否与 LINQ to Objects 等效?

为什么在 unsafe.Sizeof() 中取消引用 nil 指针不会导致panic ?