GoLang想念链接静态库

时间:2016-08-26 16:30:24

标签: go settings environment

运行go run main.go我收到一条奇怪的错误消息:

danilo@lm ~/godev/src/quick $ go run main.go 
command-line-arguments
/usr/lib/go-1.6/pkg/tool/linux_amd64/link: cannot open file /usr/lib/go-1.6/pkg/linux_amd64/github.com/valyala/quicktemplate.a: open /usr/lib/go-1.6/pkg/linux_amd64/github.com/valyala/quicktemplate.a: no such file or directory`

这是我的环境:

Linux Mint 18

GOLANG ENV:

danilo@lm ~/godev/src/quick $ go env
GOARCH="amd64"
GOBIN="/home/danilo/godev/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/danilo/godev"
GORACE=""
GOROOT="/usr/lib/go-1.6"
GOTOOLDIR="/usr/lib/go-1.6/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

我的$ GOPATH树:

.(godev)
├── bin
│   └── qtc
├── pkg
│   └── linux_amd64
│       └── github.com
│           └── valyala
│               ├── bytebufferpool.a
│               └── quicktemplate.a
└── src
    ├── github.com
    │   └── valyala
    │       ├── bytebufferpool
    │       │   ├── ...
    │       └── quicktemplate
    │           ├── ...
    └── quick
        ├── main.go
        └── templates
            ├── hello.qtpl
            └── hello.qtpl.go

似乎错过了我的工作区中存储静态库的pkg文件夹! 我是对的吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

对不起,我解决了。 main.go代码为:

package main

import (
    "fmt"

    "./templates"
)

func main() {
    fmt.Printf("%s\n", templates.Hello("Foo"))
    fmt.Printf("%s\n", templates.Hello("Bar"))
}

所以我错过了在导入部分使用绝对路径:

package main

import (
    "fmt"

    "quick/templates"
)

func main() {
    fmt.Printf("%s\n", templates.Hello("Foo"))
    fmt.Printf("%s\n", templates.Hello("Bar"))
}