作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想运行一个 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/
我是一名优秀的程序员,十分优秀!