猿问

go install 在 golang 中不创建子包档案

我在 golang 中创建了一个名为 go-orm 的包,其结构如下。


go-orm

--| mine.go

--| src

-----| src.go

-----| db

--------| DBConnection.go

当我在 go-orm 目录中运行命令“go install”时,它只创建了 go-orm.a 而不是 src.a 和 db.a(子目录或包)。当我用 mgo 包检查“go install”时,它为它的子目录“bson”创建了 .a 文件。


我的包需要相同的功能。我的包需要做哪些更改才能使这成为可能。


编辑 1

我的包在 GOPATH/src/ 目录中。我所有的子包(src 和 db)都存在。


暮色呼如
浏览 184回答 2
2回答

qq_遁去的一_1

包构建走路径Go 路径是包含 Go 源代码的目录树列表。咨询解决在标准 Go 树中找不到的导入。默认路径是 GOPATH 环境变量的值,解释为适合操作系统的路径列表(在 Unix 上,该变量是一个以冒号分隔的字符串;在 Windows 上,一个分号分隔的字符串;在 Plan 9 上,一个列表)。Go 路径中列出的每个目录都必须具有规定的结构:src/ 目录包含源代码。'src' 下面的路径决定了导入路径或可执行文件名称。pkg/ 目录保存已安装的包对象。在 Go 树中,每个目标操作系统和架构对都有自己的 pkg 子目录 (pkg/GOOS_GOARCH)。如果 DIR 是 Go 路径中列出的目录,则可以将 DIR/src/foo/bar 中包含源代码的包作为“foo/bar”导入,并将其编译形式安装到“DIR/pkg/GOOS_GOARCH/foo/bar”。 a”(或者,对于 gccgo,“DIR/pkg/gccgo/foo/libbar.a”)。bin/ 目录保存已编译的命令。每个命令都以其源目录命名,但只使用最后一个元素,而不是整个路径。也就是说,在 DIR/src/foo/quux 中带有 source 的命令安装在 DIR/bin/quux 中,而不是 DIR/bin/foo/quux 中。foo/ 被剥离,以便您可以将 DIR/bin 添加到您的 PATH 以获取已安装的命令。这是一个示例目录布局:GOPATH=/home/user/gocode/home/user/gocode/&nbsp; &nbsp; src/&nbsp; &nbsp; &nbsp; &nbsp; foo/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bar/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(go code in package bar)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; x.go&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; quux/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (go code in package main)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; y.go&nbsp; &nbsp; bin/&nbsp; &nbsp; &nbsp; &nbsp; quux&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(installed command)&nbsp; &nbsp; pkg/&nbsp; &nbsp; &nbsp; &nbsp; linux_amd64/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foo/&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bar.a&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (installed package object)使用规定的目录结构,包括src用作目录名。根据例子。不要使用src, pkg, 或bin作为包名。go-orm--| mine.go--| src&nbsp; &nbsp; &nbsp;<== !? Don't use src as a package name.-----| src.go-----| db--------| DBConnection.go
随时随地看视频慕课网APP

相关分类

Go
我要回答