在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
go build 命令一些可选项的用途和用法 在运行go build命令的时候,默认不会编译目标代码包所依赖的那些代码包。当然,如果被依赖的代码包的归档文件(*.a)不存在,或者源码文件有了变化,那么它还是会被编译。 如果要强制编译它们,可以在执行命令的时候加入标记-a,此时,不但目标代码包总是会被编译,它所依赖的代码包也总会被编译,即使依赖的是标准库中的代码包也是如此。 另外,如果不但要编译依赖包,还要安装它们的归档文件,可以加入标记-i. 如何确定哪些代码包被编译?
go get go get是自动从一些主流公用代码仓库(如Github)下载目标代码包,并把它们安装到环境变量GOPATH包含的第一个工作区的相应目录中。如果存在环境变量GOBIN,那么仅包含命令源码文件的代码包会被安装到GOBIN指向的那个目录。 最常见的几个标记有下面几种: -u :下载并安装代码包,不论工作区中是否已经存在它们。 -d :只下载代码包,不安装代码包。 -fix:在下载代码包后先运行一个用于根据当前Go 语言版本修正代码的工具,然后再安装代码包。 -t:同时下载测试所需的代码包 -insecure: 容许通过非安全的网络协议下载和安装代码。HTTP就是这样的协议 go语言官方提供的go get命令是比较基础的,其中并没有提供依赖管理的功能。目前GitHub上有很多提供了这类功能的第三方工具,如glide、gb以及官方出品的dep,vgo等等,它们在内部大都会直接使用go get 对代码包的远程导入路径进行自定义的方法是: 在该代码包中的库源码文件的包声明语句的右边加入注释,如下: package semaphore //import "golang.org/x/sync/semaphore" 这个代码包原本的完整导入路径是 github.com/golang/sync/semaphore.这与实际存储它的网络地址对应的。该代码包的源码实际存在GitHub的golang组的sync代码仓库的semaphore目录下。而加入导入注释之后,用以下命令即可下载并安装该代码包了: go get golang.org/x/sync/semaphore 而go语言官网golang.org下的路径/x/sync/semaphore并不是存放semaphore包的真实地址。我们称之为代码包的自定义导入路径。 不过,这还需要在golang.org这个域名背后的服务端程序上,添加一些支持才可能使用这条命令成功. 请参考: https://github.com/hyper0x/go_command_tutorial/blob/master/0.3.md
归档文件存放的位置和规则 源码文件会以代码包的形式组织起来,一个代码包其实就对应一个目录。安装某个代码包而产生的归档文件是与这个代码包同名的。 放置它的相对目录就是该代码包的导入路径的直接父级。如,一个已存在的代码包的导入路径是: github.com/labstack/echo
那么执行命令 go install github.com/labstack/echo 生成的归档文件的相对目录就是github.com/labstack,文件名为echo.a 顺便说下,上面这个代码包的导入路径还有另外一层含义,那就是:该代码包的源码文件存在于Github网址的labstack组的代码仓库echo中 归档文件的相对目录与pkg目录之间还有一级目录,叫做平台相关目录。平台相关目录的名称是由build(也称为“构建”)的目标操作系统、下划线和目标计算架构的代码组成的、 如,构建某个代码包的目标操作系统是linux,目标计算架构是64位,那么对应的平台相关目录就是linux_amd64. 因此,上述代码包的归档文件就会被存放在当前工作区的子目录: pkg/linux_amd64/github.com/labstack中
|
请发表评论