假设我有一个基于哪个操作系统的软件,并且在某些情况下,我想使用哪个发行版来说一个Systemd客户端软件包vs一个Upstart客户端软件包vs一个sysv客户端软件包与一个启动客户端软件包。是否有可能有选择地导入每个软件包,所以我只导入我需要的每个操作系统/发行版我正在创建?或者我必须为每个操作系统/发行版导入每个软件包?我可以根据我正在构建的操作系统导入Golang软件包吗?
3
A
回答
6
一次构建约束,也被称为构建标签,是一个行注释是 开始
// +build
列出的条件下,一个文件应该包含在 包中。约束可能出现在任何类型的源文件中(不仅仅是 Go),但它们必须出现在文件的顶部附近,其前面只有 空行和其他行注释。这些规则意味着在Go文件 中,构建约束必须出现在package子句之前。
要区分构建约束和包文档,构建约束的系列 必须后跟一个空行。
构建约束被评估为空间分隔选项的OR; 每个选项评估为逗号分隔项的AND;和 每个术语都是一个字母数字字,或者以!开头,否定。 即,构建约束:
// +build linux,386 darwin,!cgo
对应于布尔公式:
(linux AND 386) OR (darwin AND (NOT cgo))
的文件可以具有多个生成约束。整体约束条件是个体约束的AND。也就是说,构建约束:
// +build linux darwin // +build 386
对应于布尔公式:
(linux OR darwin) AND 386
在一个特定的构建,下面的话是满意:
- the target operating system, as spelled by runtime.GOOS - the target architecture, as spelled by runtime.GOARCH - the compiler being used, either "gc" or "gccgo" - "cgo", if ctxt.CgoEnabled is true - "go1.1", from Go version 1.1 onward - "go1.2", from Go version 1.2 onward - "go1.3", from Go version 1.3 onward - "go1.4", from Go version 1.4 onward - "go1.5", from Go version 1.5 onward - "go1.6", from Go version 1.6 onward - any additional words listed in ctxt.BuildTags
如果一个文件名,在剥离扩展名和可能的_test后缀后,匹配以下任何一种模式:
*_GOOS *_GOARCH *_GOOS_GOARCH
(例如:source_windows_amd64.go)其中GOOS和GOARCH分别表示任何已知 操作系统和架构的值,则 文件被认为具有需要 这些术语(除了任何明确的限制的隐式构建约束在文件中)。
从正在考虑构建保持文件:
// +build ignore
(其它任何不满意的话也能发挥作用,但“忽略”是 传统。)
要只建一个文件使用CGO时,只在Linux和OS X:
// +build linux,cgo darwin,cgo
这样的文件,通常与其它文件执行 配对对于其它系统,在这种情况下将 进行约束默认功能:只有当 构建软件包的Windows将包括
// +build !linux,!darwin !cgo
命名一个文件dns_windows.go将导致它;同样,只有在为32位x86构建包时,math_386.s将包含 。
除了android标签和文件,使用GOOS = android匹配构建标签和文件,至于GOOS = linux 。
使用构建约束。
使用一个包含多个文件的包。每个文件专门针对特定的操作系统,体系结构等组合。
相关问题
- 1. 软件工程师可以创建嵌入式系统吗?
- 2. 我如何根据我的操作系统包含不同的标题?
- 3. 我们可以从sqlite3执行操作系统命令吗
- 4. 我可以双启动两个iPhone操作系统吗?
- 5. 我可以在我的软件中包含codeigniter吗?
- 6. 我们可以在两个操作系统之间复制postgres数据吗?
- 7. 我可以在我的PC上使用VxWorks OS作为正常操作系统吗?
- 8. 我可以根据Itext销售软件吗Sharp
- 9. 我可以将本机操作系统安装作为虚拟机操作系统运行吗?
- 10. 如何在基于Debian的系统中构建RPM软件包?
- 11. 我可以在操作系统使用php的Tickting System上实现SMS Api吗?
- 12. 我可以在不同的操作系统上共享VirtualBox + Ubuntu 12.04/Guest Additions吗?
- 13. 我可以根据用户的输入动态创建类吗?
- 14. 构建我的第一个操作系统
- 15. 导入数据库后,我可以重新映射CRM 2011系统用户吗?
- 16. 在wxpython中导入操作系统
- 17. 我能正确理解操作系统的双模式操作吗?
- 18. 我在哪里可以下载诺基亚操作系统?
- 19. 我可以在64位操作系统上安装32位jvm吗?
- 20. 如何下载不同操作系统的pip软件包?
- 21. 我可以创建一个可从CE 6.0和我的引导加载程序访问的文件系统吗?
- 22. 我应该使用Docker在Linux操作系统中创建Linux操作系统吗?
- 23. 窗口皮肤根据操作系统
- 24. 我可以从linux操作系统中找到绝对增加的值吗?
- 25. 我可以在javascript中获得操作系统的测量系统(公制或美国)吗
- 26. “VS 10 x64”程序在x86操作系统上可以正常工作吗?
- 27. 我可以在不安装软件包的情况下加载软件包的数据集吗?
- 28. 找到操作系统和EC2实例的许可软件
- 29. 我需要使用Java + OpenGL构建Ubuntu/Debian软件包吗?
- 30. 自定义Android操作系统构建