gpt4 book ai didi

go - "go run"但请注意我缺少 .a 文件(我已经运行 "go get")

转载 作者:IT王子 更新时间:2023-10-29 01:15:17 25 4
gpt4 key购买 nike

我想运行一个 go 文件,主包导入了一个本地包,本地包导入了一个 github 包。并得到一个错误(缺少 .a 文件)

环境:$GOROOT=/usr/local/go$GOPATH=/路径

转到版本 1.6.3(1.6.2 中同样的问题)

我试着像这样运行一个 go 文件:

/gopath/src/myproj/main/app.go

package main

import (
"../http/server"
)

func main() {
server.Run()
}

/gopath/src/myproj/http/server/route.go

package server

import (
"github.com/gorilla/mux"
"net/http"
)

func Run(){
router := mux.NewRouter()
router.HandleFunc("/", handler)
http.Handle("/", router)
http.ListenAndServe("9090", nil)
}

func handler(res http.ResponseWriter, req *http.Request) {
res.Write([]byte("Hello"))
}

然后,我运行 go get github.com/gorilla/mux 我可以看到有文件

/gopath/pkg/linux_amd64/github.com/gorilla/mux (there are context.a and mux.a)
/gopath/src/github.com/gorilla/mux
/gopath/src/github.com/gorilla/context

是的,src 文件和 pkg 文件(.a) 已经从 github 下载了,

但是,我运行“go run main/app.go”,得到

# command-line-arguments
/usr/local/go/pkg/tool/linux_amd64/link: cannot open file /usr/local/go/pkg/linux_amd64/github.com/gorilla/mux.a: open /usr/local/go/pkg/linux_amd64/github.com/gorilla/mux.a: no such file or directory

编译器没有在 GOPATH 中找到文件,而是在 GOROOT 中如果我将 $GOPATH/pkg 文件复制到 $GOROOT/pkg 就很好。

而且,如果我直接在主包中导入 github.com/gorilla/mux 也很好。

最佳答案

正如 JimB 所说,不要使用相对路径进行导入

如果您将 "../http/server" 更改为 myproj/http/server 它应该不再有链接问题

关于go - "go run"但请注意我缺少 .a 文件(我已经运行 "go get"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38456214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com