Go命令行—compile
常用作编译命令行指定的单个go源码包。会生成一个以文件.o为后缀的目标文件,其文件名与包内第一个源文件的文件名相同。 目标文件可以与其他对象组合成一个包档案或直接传递给链接器(go tool link)。如果使用-pack调用,编译器会直接写入一个档案(archive),绕过中间目标文件。
生成的文件包含有关由包导出的符号的类型信息,以及包使用的从其他包导入的符号使用的类型。因此,在编译包P的客户端C读取P的依赖关系文件时,不需要编译P的输出。
命令行
go tool compile [flags] file...
指定的文件必须是Go源文件和同一个包下的其他部分。所有目标操作系统和体系结构都使用相同的编译器。 GOOS和GOARCH环境变量设置了所需的属性。
-D path
设置本地导入的相对路径。
-I dir1 -I dir2
在dir1,dir2等文件夹搜索导入的包,
会先查询 $GOROOT/pkg/$GOOS_$GOARCH.
-L
在错误消息中显示完整的文件路径。
-N
禁用优化。
-S
将汇编列表打印到标准输出(仅限代码)。
-S -S
将汇编列表打印到标准输出(代码和数据)。
-V
打印编译器版本并退出。
-asmhdr file
将汇编头写入文件。
-blockprofile file
编写用于编译到文件的块配置文件。
-complete
假设软件包没有非Go组件。
-cpuprofile file
编写用于编译文件的CPU配置文件。
-dynlink
允许引用共享库中的Go符号(实验性功能)。
-e
移除报告错误数量限制(默认限制为10)。
-h
在检测到第一个错误时暂停堆栈跟踪。
-importmap old=new
在编译过程中将导入“旧”解释为导入“新”。
该选项可以重复添加。
-installsuffix suffix
在 $GOROOT/pkg/$GOOS_$GOARCH_suffix 查找包
而非 $GOROOT/pkg/$GOOS_$GOARCH.
-l
禁用内联。
-largemodel
生成假定大内存模型的代码。
-linkobj file
将链接器特定的对象写入文件和编译器特定的对象
对象到通常的输出文件(由-o指定)。
没有这个标志,-o输出是两者的组合
链接器和编译器输入。
-memprofile file
写入内存配置文件。
-memprofilerate rate
设置 runtime.MemProfileRate 调整编译速度。
-msan
将调用插入到C/C++内存清理程序。
-mutexprofile file
编写用于编译文件的互斥量配置文件。
-nolocalimports
禁止本地(相对)导入。
-o file
将目标写入文件(默认file.o或与-pack,file.a)。
-p path
为正在编译的代码设置期望的包导入路径,
并诊断会导致循环依赖的导入。
-pack
编写一个包(归档)文件而不是一个目标文件
-race
编译启用竞争检测器。
-trimpath prefix
从记录的源文件路径中删除前缀。
-u
禁止导入未标记为安全的软件包;意味着 -nolocalimports.
还有一些调试标志;运行该命令时没有使用消息的参数。
编译指令
编译器在行的开头以//注释的形式接受编译器指令。为了将它们与非指令注释区分开来,指令在斜线和指令名称之间不需要空格。但由于它们是注释,不知道指令约定或特定指令的工具可以像跳过其他注释一样跳过指令。
//line path/to/file:linenumber
//line指令指定后面的源代码行应该被记录为来自给定的文件路径和行号。连续的行使用递增的行号记录,直到下一个指令。该指令通常出现在机器生成的代码中,因此编译器和调试器将在生成器的原始输入中显示行。
//line指令是一个历史的特例;所有其他指令的格式为//go:name,表示该指令是由Go工具链定义的。
//go:noescape
//go:noescape指令指定文件中的下一个声明,它必须是一个没有body的func(意思是它有一个不用Go编写的实现),不允许任何作为参数传递的指针转义到堆或从函数返回的值。在调用函数的Go代码的编译器转义分析期间,可以使用这些信息。
//go:nosplit
//go:nosplit指令指定文件中声明的下一个函数不能包含堆栈溢出检查。在调用goroutine被抢占的时候,调用低级运行时源的情况最为常见。
//go:linkname localname importpath.name
//go:linkname指令指示编译器使用“importpath.name”作为源代码中声明为“localname”的变量或函数的目标文件符号名称。因为这个指令可以颠覆类型系统和包模块化,所以只有在导入 unsafe 包的文件中才能使用。
Go命令行—compile的更多相关文章
- Maven命令行使用:mvn clean compile(编译)
先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令: mvn clean compile 执行结果如下: [INFO] Scanning ...
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...
- Maven命令行使用:mvn clean package(打包)
先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令: mvn clean package 执行结果如下: [INFO] Scanning ...
- Maven命令行使用:mvn clean install(安装)
先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令: $ mvn clean install 执行结果如下: [INFO] Scannin ...
- gcc 常用命令行及解释
gcc - GNU project C and C++ compiler gcc [option] file... preprocessing compila ...
- Maven学习(四)Maven 命令行选项
说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之 间必须有空格.如下面的例子: $ mvn help:describe -Dcmd=compiler:co ...
- iOS系统提供开发环境下命令行编译工具:xcodebuild
iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...
- Gradle命令行黑魔法
毫无疑问,现在Gradle已经成为java世界最火的构建工具,风头已经盖过了冗余的ant,落后的maven.Gradle是以Groovy语言编写的一套构建脚本的DSL,由于Groovy语法的优雅,所以 ...
- Sass学习之路:Sass、Compass安装与命令行
导言 CSS不是一门真正意义上的编程语言,很多编程语言理所当然的特性(比如变量),都不被支持.同时再开发模块化的web项目的时候,也要避免相互干扰.为了弥补CSS的这些不足,就产生了CSS预处理器,S ...
随机推荐
- Linux常见命令之权限管理命令
chmod命令 chmod命令用来变更文件或目录的权限.在UNIX系统家族里,文件或目录权限的控制分别以读取.写入.执行3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文 ...
- 【总结】《氨基酸新晋管理者领导力培训》第一次课_Day2_学习心得
7月26日第二天学习心得: 今天主要学习了执行贯彻和绩效反馈两大块内容,我的心得有: 一.执行层面有两大原则:--理解员工需求: 回顾了一下自己以往的经历,一般这块我用的最多的一般是在接到一个新项目的 ...
- rsync免交互方法
添加-e "ssh -o StrictHostKeyChecking=no" rsync -avzP -e "ssh -o StrictHostKeyChecking=n ...
- 死磕 java同步系列之ReentrantLock源码解析(二)——条件锁
问题 (1)条件锁是什么? (2)条件锁适用于什么场景? (3)条件锁的await()是在其它线程signal()的时候唤醒的吗? 简介 条件锁,是指在获取锁之后发现当前业务场景自己无法处理,而需要等 ...
- python基础(26):类的成员(字段、方法、属性)
1. 字段 字段:包括普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同. 普通字段属于对象 静态字段属于类 字段的定义和使用: class Province: # ...
- IP地址网段表示法
172.12.34.0/25 子网掩码:用于表示IP地址中的多少位用来做主机号.因为"其中值为1的比特留给网络号和子网号,为0的比特留给主机号"(TCP/IP V1). 172.1 ...
- shell中的fg 命令
fg(前台执行) frontground bg(后台执行) background & daemon 总结: 一般命令在前台执行(fg),执行完毕后,控制返回给用户. 在命令后面加上&, ...
- js实现textarea自适应高度
html结构: <div class="container" id="container"> <div class="text-wr ...
- MySQL日常使用遵循的规范建议
一 . 基础规范 1.必须使用InnoDB存储引擎 解读:支持事务:支持行级锁:支持MVCC多版本控制:支持外键:死锁自动检测:并发性能更好.CPU及内存缓存页优化使得资源利用率更高. 2. 表字符 ...
- [Go] 利用channel形成管道沟通循环内外
这个要解决的问题是,比如如果有一个大循环,取自一个大的文件,要进行逻辑处理,那么这个逻辑的代码要放在循环每一行的循环体里面,这样有可能会出现一个for循环的逻辑嵌套,一层又一层,类似俄罗斯套娃.如果放 ...