为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
暮色呼如 2021-08-16 15:31:44
我在 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)都存在。
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

包构建


走路径


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/

    src/

        foo/

            bar/               (go code in package bar)

                x.go

            quux/              (go code in package main)

                y.go

    bin/

        quux                   (installed command)

    pkg/

        linux_amd64/

            foo/

                bar.a          (installed package object)

使用规定的目录结构,包括src用作目录名。根据例子。不要使用src, pkg, 或bin作为包名。


go-orm

--| mine.go

--| src     <== !? Don't use src as a package name.

-----| src.go

-----| db

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


查看完整回答
反对 回复 2021-08-16
  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信