【问题标题】:"expected pseudo-register; found R13" error“预期的伪寄存器;发现 R13”错误
【发布时间】:2022-01-24 04:53:09
【问题描述】:

我刚刚用 goland 运行了一个 go 项目,但遇到了错误:

# github.com/choleraehyq/pid
../../../.go/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s:28: expected pseudo-register; found R13
../../../.go/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s:29: expected pseudo-register; found R14
asm: assembly of ../../../.go/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s failed

我对这个错误感到困惑,我不知道该怎么办。我无法通过此错误消息进行一些调试工作,也没有从谷歌获得任何有用的信息。 github.com/choleraehyq/pid 在框架下被引用。

我只想知道发生了什么以及如何解决它。请帮助我,非常感谢。

【问题讨论】:

    标签: go


    【解决方案1】:

    这也发生在我身上。它可能与您的 golang 版本有关;
    我把我的golang版本从1.17改成了1.14,问题解决了。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 使用 go 1.16 而不是 1.17 也为我解决了这个问题。
    【解决方案2】:

    我只想知道发生了什么以及如何解决它。


    1. 阅读说明。

    Stack Overflow: Help: How to create a Minimal, Reproducible Example

    1. 按照说明进行操作。

    例如,

    包goid
    github.com/choleraehyq/pid@v0.0.10
    以编程方式检索当前 goroutine 的 ID。

    .

    $ cat pid.go
    package main
    
    import (
        "fmt"
    
        goid "github.com/choleraehyq/pid"
    )
    
    func main() {
        pid := goid.GetPid()
        fmt.Println(pid)
    }
    $
    

    .

    $ cat go.mod
    module example/pid
    
    go 1.17
    
    require github.com/choleraehyq/pid v0.0.10
    $ 
    

    .

    $ go version
    go version go1.17.5 linux/amd64
    $ 
    

    .

    $ go build pid.go && ./pid
    # github.com/choleraehyq/pid
    ../../gopath/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s:28: expected pseudo-register; found R13
    ../../gopath/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s:29: expected pseudo-register; found R14
    asm: assembly of ../../gopath/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s failed
    $ 
    

    升级到最新版本。

    .

    $ go get -u github.com/choleraehyq/pid
    go: downloading github.com/choleraehyq/pid v0.0.13
    go: upgraded github.com/choleraehyq/pid v0.0.10 => v0.0.13
    $
    

    .

    $ cat go.mod
    module example/pid
    
    go 1.17
    
    require github.com/choleraehyq/pid v0.0.13
    $ 
    

    .

    $ go build pid.go && ./pid
    1
    $ 
    

    避免使用旧的、过时的和不受支持的软件版本。



    更新:

    来自 OP 的评论:

    谢谢。原始项目是一个大项目,具有很深的依赖关系。我发现我需要在项目的go.mod 中添加github.com/choleraehyq/pid v0.0.13 // indirect。 – sh1yu

    【讨论】:

    • 非常感谢!事实上,原来的项目是一个大项目,并且有很深的依赖关系。首先我不知道如何升级依赖的版本,最后我发现它只需要在项目的go.mod中添加github.com/choleraehyq/pid v0.0.13 // indirect即可。
    • @rocka2q 您的大部分答案都不是实际答案。如果您删除“课程”并将答案保留为实际答案,那将是最好的。可以在 OP 上的 cmets 中教授课程
    • @Cjmarkham:Stack Overflow cmets 是暂时的。添加 OP 的评论为未来的读者留下了答案中的最终解决方案。 Stack Overflow 的主要目的是收集有用的、可搜索的问答。
    • 我看不出评论比答案更短暂...
    • @Cjmarkham:OP 询问“知道发生了什么以及如何解决它。”我解释了我是如何发现这个问题的:“授人以鱼,你养他一天;授人以渔,你养他一辈子。” Stack Overflow 是一个学习网站。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2014-10-15
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多