当前位置: 首页 > news >正文

go build

go build

作用:将Go语言程序和相关依赖编译成可执行文件

go build 无参数编译

生成当前目录名的可执行文件并放置于当前目录下,如:

go build

go build+文件列表

编译同目录的多个源码文件时,可以在 go build 的后面提供多个文件名,go build 会编译这些源码,输出可执行文件,“go build+文件列表”的格式如下:
go build file1.go file2.go…
可执行文件默认选择文件列表中第一个源码文件作为可执行文件名输出,如:

go build upload.go main.go

使用“go build+文件列表”编译方式编译时,文件列表中的每个文件必须是同一个包的 Go 源码。
注意:如果go build main.go,但是main.go调用了同包的其他文件,会报错。

$ tree -L 2
└── main├── main.go└── hello.go

main.go内容如下:

package mainfunc main() {println("this is function main")hello()println(A)
}

hello.go内容如下:

package mainvar A string = "AA"func hello() {println("this is function hello")
}

因为同一个包下,并没有import语句,不会自动导入。解决:go build main.go hello.go

$ go build main.go
# command-line-arguments
.\main.go:5:2: undefined: hello
.\main.go:6:10: undefined: A

go build+包

可以直接根据包名进行编译,即便包内文件被增(加)删(除)也不影响编译指令。

下面的命令用于构建同一个包,虽然它们的写法各不相同:

$ cd $GOPATH/src/gopl.io/ch1/helloworld
$ go build

或者

$ cd anywhere
$ go build gopl.io/ch1/helloworld

或者

$ cd $GOPATH
$ go build ./src/gopl.io/ch1/helloworld

但不能这样

$ cd $GOPATH
$ go build src/gopl.io/ch1/helloworld
Error: cannot find package "src/gopl.io/ch1/helloworld".

go build 还有一些附加参数,可以显示更多的编译信息和更多的操作,详见下表所示。

附加参数备 注
-v编译时显示包名
-p n开启并发编译,默认情况下该值为 CPU 逻辑核数
-a强制重新构建
-n打印编译时会用到的所有命令,但不真正执行
-x打印编译时会用到的所有命令
-race开启竞态检测,常用于并发模式下的共享变量检测
-o后接文件名,强制对输出的文件进行重命名
-work打印编译工作的临时目录
-gcflags后面的参数可以是多个,用空格进行分隔,并用 ""进行包裹,这些参数将传递到 go tool compile 工具中进行调用。例如,go build -gcflags "-l -m"
-ldflags后面的参数可以是多个,用空格进行分隔,并用 ""进行包裹,这些参数将传递到 go tool link 工具中进行调用。例如,go build -ldflags “-w -s”。这个命令可以隐藏所有代码实现相关的信息,并减少生成文件的大小。其中,-w 可以移除调试信息(无法使用gdb 调试),-s 可以移除符号表

相关文章:

go build

go build 作用:将Go语言程序和相关依赖编译成可执行文件 go build 无参数编译 生成当前目录名的可执行文件并放置于当前目录下,如: go build go build文件列表 编译同目录的多个源码文件时,可以在 go build 的后面提供多个文件…...

力扣238和169

一:238. 除自身以外数组的乘积 1.1题目 1.2思路 1.3代码 //左右乘表 int* productExceptSelf(int* nums, int numsSize, int* returnSize) {int* answer (int*)malloc(numsSize*sizeof(int));int i 0;int left[numsSize],right[numsSize];left[0] 1;for(i 1;…...

Android 基础技术——Framework

笔者希望做一个系列,整理 Android 基础技术,本章是关于 Framework 简述 Android 系统启动流程 当按电源键触发开机,首先会从 ROM 中预定义的地方加载引导程序 BootLoader 到 RAM 中,并执行 BootLoader 程序启动 Linux Kernel&…...

JavaWeb 中的静态资源访问

文章目录 JavaWeb 中的静态资源访问1. Tomcat 中的两个默认 ServletJSPServletDefaultServlet配置引起的 bug情况一情况二情况三 2. 总结3. 如何允许静态资源访问 JavaWeb 中的静态资源访问 1. Tomcat 中的两个默认 Servlet Tomcat 有两个默认的 Servlet,你的 Web…...

asp.net web api 用户身份验证

前后端分离的开发中,应用服务需要进行用户身份的验证才允许访问数据。实现的方法很简单。创建一个webapi项目。在App_Start目录下找到WebApiConfig.cs, 在里面增加一个实现类。 public static class WebApiConfig{public static void Register(HttpConfi…...

3DTile是不是没有坐标的选择?

可参考以下内容: 一、坐标参考系统(CRS) 3D Tiles 使用右手笛卡尔坐标系;也就是说,x和y的叉积产生z。3D Tiles 将z轴定义为局部笛卡尔坐标系的向上。tileset的全局坐标系通常位于WGS 84地心固定(ECEF)参考系(EPSG4978)中,但它不是必须的&am…...

数据采集三防平板丨三防平板电脑丨停车场应用

随着现代科技的不断发展,三防平板已经成为许多人工作和生活的必备工具。在停车场这个场景中,三防平板的应用可以大大提高停车场管理的效率和安全性。 停车场是现代城市交通管理的重要组成部分,它直接关系到城市交通的流畅和公共安全。停车场…...

解决git push时的too_many_commits提示

解决git push时的too_many_commits提示 提示内容 push时报错如下: Sorry, you were trying to upload xxxxxx commits in one push 原因分析 这个应该是因为在提交规则里配置了 一次只允许提交一个 commit,这样当 icode 上有 commit 没有合入时&…...

GPT-4助力我们突破思维定势

GPT-4在突破思维局限、激发灵感和促进知识交叉融合方面的作用不可小觑,它正逐渐成为一种有力的工具,助力各行业和研究领域的创新与发展。 GPT-4在突破传统思维模式、拓宽创新视野和促进跨学科知识融合方面扮演着越来越重要的角色: 突破思维…...

【前端工程化面试题】什么是 CI/CD

CI/CD 是软件开发中的两个重要实践,分别代表持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)。 持续集成 (Continuous Integration, CI):持续集成是一种…...

kafka的安装,用于数据库同步数据

1.0 背景调研 因业务需求,需要查询其他部门的数据库数据,不方便直连数据库,所以要定时将他们的数据同步到我们的环境中,技术选型选中了kafkaCDC Kafka是Apache旗下的一款分布式流媒体平台,Kafka是一种高吞吐量、持久…...

Bean 的作用域你知道么 ?

Bean 的作用域有哪些? 所谓的作用域,其实就是说这个东西在哪个范围内可以被使用 , 如我们定义类的成员变量的时候使用的public,private等这些也是作用域的概念 Spring的Bean的作用域, 描述的就是这个Bean在哪个范围内可以被使用. 不同的作用域决定了Bean的创建, 管理和销毁的…...

Windows 使设置更改立即生效——并行发送广播消息

目录 前言 1 遍历窗口句柄列表 2 使用 SendMessageTimeout 发送延时消息 3 并行发送消息实现模拟广播消息 4 修改 UIPI 消息过滤器设置 5 托盘图标刷新的处理 6 完整代码和测试 本文属于原创文章,转载请注明出处: https://blog.csdn.net/qq_5907…...

PostgreSQL使用session_exec和file_fdw实现失败次数锁定用户策略

使用session_exec 、file_fdw以及自定义函数实现该功能。 缺陷:实测发现锁用户后,进去解锁特定用户。只能允许一次登陆,应该再次登陆的时候,触发函数,把之前的日志里的错误登陆的信息也计算到登录次数里了。而且foreig…...

Jmeter实现阶梯式线程增加的压测

安装相应jmeter 插件 1:安装jmeter 管理插件: 下载地址:https://jmeter-plugins.org/install/Install/,将下载下来的jar包放到jmeter文件夹下的lib/ext路径下,然后重启jmeter。 2:接着打开 选项-Plugins Ma…...

Linux----防火墙之保存规则

一、关于iptables规则的保存 之前写的iptables的设置,但是都是临时生效的,一旦电脑重启,那么就会失效,如何永久保存,需要借助iptables-save命令,开机生效需要借助iptables-restore命令,并写入规…...

spring-orm:6 HibernateJpaVendorAdapter源码解析

版本 spring-orm:6.1.3 源码 org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter public class HibernateJpaVendorAdapter extends AbstractJpaVendorAdapter {// 旧版本Hibernate的方言类是否存在标识private static final boolean oldDialectsPresent Clas…...

php捕获Fatal error错误与异常处理

在php5的版本中&#xff0c;如果出现致命错误是无法被 try {} catch 捕获的&#xff0c;如下所示&#xff1a; <?phperror_reporting(E_ALL); ini_set(display_errors, on);try {hello(); } catch (\Exception $e) {echo $e->getMessage(); } 运行脚本&#xff0c;最终…...

PyCharm 调试过程中控制台 (Console) 窗口内运行命令 - 实时获取中间状态

PyCharm 调试过程中控制台 [Console] 窗口内运行命令 - 实时获取中间状态 1. yongqiang.py2. Debugger -> Console3. Show Python PromptReferences 1. yongqiang.py #!/usr/bin/env python # -*- coding: utf-8 -*- # yongqiang chengfrom __future__ import absolute_imp…...

MacBook Pro如何安装rust编程环境

安装过程分为以下几步&#xff1a; 1. 安装Homebrew。Homebrew是一个流行的MacOS的包管理器&#xff0c;可用于方便地安装各种软件。打开终端&#xff0c;运行以下命令&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD…...

SparkUI任务启动参数介绍(148个参数)

文章目录 SparkUI任务启动参数介绍&#xff08;148个参数&#xff09;1 spark.app.id: Spark 应用程序的唯一标识符。2 spark.app.initial.jar.urls: Spark 应用程序的初始 Jar 包的 URL。3 spark.app.name: Spark 应用程序的名称。4 spark.app.startTime: Spark 应用程序的启动…...

nginx 安装

Nginx 简介 nginx一种十分轻量级的http服务器一种高性能的HTTP和反向代理服务器,同时是一个IMAP/POP3/SMTP 代理服务器其中官网网站 安装Nginx 使用源码编辑安装 #提前安装相关工具软件包 yum -y install net-tools tar unzip gcc make pcre-devel openssl-devel httpd-too…...

手撕扩散模型(一)| 训练部分——前向扩散,反向预测代码全解析

文章目录 1 直接使用 核心代码2 工程代码实现2.1 DDPM2.2 训练 三大模型VAE&#xff0c;GAN&#xff0c; DIffusion扩散模型 是生成界的重要模型&#xff0c;但是最近一段时间扩散模型被用到的越来越多的&#xff0c;最近爆火的OpenAI的 Sora文生视频模型其实也是用了这种的方…...

linux 防火墙

防火墙分类 按保护范围划分 主机防火墙&#xff1a;服务服务为当前一台主机 网络防火墙&#xff1a;服务服务为防火墙一侧的局域网 按实现方式分类划分 硬件防火墙&#xff1a;在专用硬件级别实现部分功能的防火墙&#xff1b;另一部分基于软件的实现 如&#xff1a;华为&#…...

Go应用性能分析实战

Go很适合用来开发高性能网络应用&#xff0c;但仍然需要借助有效的工具进行性能分析&#xff0c;优化代码逻辑。本文介绍了如何通过go test benchmark和pprof进行性能分析&#xff0c;从而实现最优的代码效能。原文: Profiling Go Applications in the Right Way with Examples…...

MySQL的索引类型

目录 1. 主键索引 (PRIMARY KEY) 2. 唯一索引 (UNIQUE) 3. 普通索引 (INDEX) 4. 全文索引 (FULLTEXT) 5. 空间索引 (SPATIAL) 6. 组合索引 (COMPOSITE INDEX) 7. 前缀索引 (PREFIX INDEX) 8. 覆盖索引 (COVERING INDEX) 1. 主键索引 (PRIMARY KEY) 描述&#xff1a;表…...

picker选择器-年月日选择

从底部弹起的滚动选择器。支持五种选择器&#xff0c;通过mode来区分&#xff0c;分别是普通选择器&#xff0c;多列选择器&#xff0c;时间选择器&#xff0c;日期选择器&#xff0c;省市区选择器&#xff0c;默认是普通选择器。 学习一下日期选择器 平台差异说明 日期选择默…...

【LeetCode-494】目标和(回溯动归)

目录 LeetCode494.目标和 题目描述 解法1&#xff1a;回溯法 代码实现 解法2&#xff1a;动态规划 代码实现 LeetCode494.目标和 题目链接 题目描述 给定一个非负整数数组&#xff0c;a1, a2, ..., an, 和一个目标数&#xff0c;S。现在你有两个符号 和 -。对于数组中…...

力扣 188. 买卖股票的最佳时机 IV

题目来源&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/description/ C题解&#xff1a;动态规划 思路同力扣 123. 买卖股票的最佳时机 III-CSDN博客&#xff0c;只是把最高2次换成k次。如果思路不清晰&#xff0c;可以将k从0写到4等找找规律…...

【Go语言】Go项目工程管理

GO 项目工程管理&#xff08;Go Modules&#xff09; Go 1.11 版本开始&#xff0c;官方提供了 Go Modules 进行项目管理&#xff0c;Go 1.13开始&#xff0c;Go项目默认使用 Go Modules 进行项目管理。 使用 Go Modules的好处是不再需要依赖 GOPATH&#xff0c;可以在任意位…...