首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Golang语言社区

    Go源码编译

    Go is compiled with … Go! ? using /usr/local/Cellar/go/1.10.3/libexec. 5 Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1 . 6 Building Go toolchain2 using go_bootstrap and Go toolchain1. 7 Building Go toolchain3 using go_bootstrap and Go toolchain2. 8 Building packages and commands for darwin/amd64. 9 --- 10 Installed Go for darwin 4 │ ├── download 5 │ │ └── github.com 6 │ │ └── pkg 7 │ │ └── errors 8

    96510发布于 2018-07-26
  • 来自专栏HHTjim'S 部落格

    go build 交叉编译

    go build 交叉编译 作者:matrix 被围观: 10 次 发布时间:2023-02-10 分类:Golang | 无评论 » Golang支持跨平台编译,比起python只能编译为当前平台的二进制文件要好太多 go build help $ go help build usage: go build [-o output] [build flags] [packages] ... 默认编译(输出当前平台二进制文件) $ go build -ldflags="-s -w" main.go && upx -9 . 调试信息,将无法使用gdb进行调试 -extldflags "-static -fpic" 表示完全静态编译(默认是静态链接 个别库可能会导致动态链接),这样编译生成的文件就可以任意放到指定平台下运行 Go程序 https://colobu.com/2018/07/20/totally-static-Go-builds/ Go编译常用参数 https://juejin.cn/post/7096772208999006244

    2.9K40编辑于 2023-02-13
  • 来自专栏电光石火

    编译运行GO程序

    写好go的代码文件,然后再CMD下一路cd到test.go目录下来 在cmd下运行 go run test.go就可以运行go程序了 GO程序的代码是可以直接编译成exe文件的 在test.go目录下运行 go build test.go即可把go程序编译成exe文件 可以在cmd直接输入test.exe运行

    1.6K20发布于 2019-12-06
  • 来自专栏容器计算

    Go】confluent-kafka-go编译问题

    最近在给组里用到的镜像瘦身,也就是用一个更轻一点的基础镜像来重新构建服务的镜像,然后发现我们的项目 indirect 依赖到了 confluent-kafka-go,然后这玩意是需要在本地环境用到 librdkafka 说下编译遇到的问题,本地执行 go build 发现下面的报错。 gopkg.in/confluentinc/confluent-kafka-go.v1/kafka # pkg-config --cflags -- rdkafka-static Package rdkafka-static https://github.com/edenhill/librdkafka 因为编译的时候不希望在本地编译机安装乱七八糟的东西,所以选择了用容器了编译,那么就得保证你的容器环境里有安装这个东西了, 方法还有很多,比如说把 github 仓库复制到镜像,在镜像里进行重新的编译构建等。安装完成后,业务项目就成功编译了。

    1.9K30发布于 2021-05-27
  • 来自专栏Golang语言社区

    Go 语言编译过程概述

    编译原理 Go 语言编译器的源代码在 cmd/compile 目录中,目录下的文件共同构成了 Go 语言的编译器,学过编译原理的人可能听说过编译器的前端和后端,编译器的前端一般承担着词法分析、语法分析、 编译器入口 Go 语言的编译器入口在 src/cmd/compile/internal/pc 包中的 main.go 文件,这个 600 多行的 Main 函数就是 Go 语言编译器的主程序,这个函数会先获取命令行传入的参数并更新编译的选项和配置 n.Left.Name.Param.Alias) { 4 xtop[i] = typecheck(n, ctxStmt) 5 } 6 } 7 8 ) 4 5 for i := 0; i < len(xtop); i++ { 6 n := xtop[i] 7 if n.Op == ODCLFUNC { 8 总结 Go 语言的编译过程其实是非常有趣并且值得学习的,通过对 Go 语言四个编译阶段的分析和对编译器主函数的梳理,我们能够对 Golang 的实现有一些基本的理解,掌握编译的过程之后,Go 语言对于我们来讲也不再是一个黑盒

    1.7K40发布于 2019-03-07
  • 来自专栏程序技术知识

    跨平台 go 编译控制

    = "windows" { } 但时到Linux下编译不过, 因为syscall的接口分不同平台, 有点仅支持Windows. 自然而然想到了go编译控制: 在文件头加入如下标签: //+build windows 然后编译的时候添加tag参数 go build -tags="windows" 比如我这里就会存在两个文件 func_windows.go sct, 1, uintptr(unsafe.Pointer(strUtf16)), 0, 0) syscall.FreeLibrary(kernel32) } 和 func_linux.go

    67910编辑于 2022-07-22
  • 来自专栏灰子学技术

    Go语言之条件编译

    在C和C++中,我们可以很轻松的完成这件事情,那就是使用“预编译宏”#ifndef XXX #define XXXX #endif,但是Go语言中,我们该如何操作呢? 条件编译Go语言中也有这种类似的方法,叫做条件编译,不过功能要比C和C++中弱了很多,有两种方式:build tags和文件后缀。 go build指令在编译项目的时候会检查每一个文件的build tags,用来决定是编译还是跳过该文件,build tags遵循以下规则: 不同tag域之间用空格区分,他们是OR关系。 例子: 编译结果: 1). go build // 不加编译tags=pretest的情况,结果如下所示: 2). go build tags=pretest //指定编译tag的情况下,结果如下所示 2.通过文件后缀实现 具有_GOOS.go后缀的go文件在编译的时候会根据当前平台来判断是否将该文件导入并编译;同样适用于处理器架构判断_GOARCH.go

    94120编辑于 2023-10-30
  • 来自专栏gopher云原生

    Go 编译器优化

    《从.go 文本文件到可执行文件》一文中,我们简单描述了 Go 编译器的工作流程。本文将继续深入其中的一些代码优化的工作。 build main.go 查看生成的 ssa.html : 死代码消除过程 最终生成的 SSA 可以看到,main 函数内的所有逻辑确实都被编译器优化掉了。 如果希望所有函数都不执行内联操作,可以直接为编译器选项加上 -l 参数,即 go build -gcflags="-l" main.go (如果 -l 数量大于等于 2 ,编译器将会采用更激进的内联策略 正常情况,我们直接使用编译器默认选项即可。 逃逸分析 不同于 C 语言的手动内存管理方式(通过 malloc 分配堆内存对象, free 手动释放),带有 GC 机制的 Go 语言在编译阶段会进行逃逸分析,自动决定将变量分配到 goroutine

    1.2K20编辑于 2022-11-22
  • 来自专栏kali blog

    Centos8编译安装MySQL8

    =/usr/local/mysql/data 记录初始密码 image.png 配置my.cnf 其中 my.cnf 配置的内容为: [mysqld] character_set_server=utf8mb4

    1.1K20编辑于 2021-12-19
  • 来自专栏龙首琴剑庐

    OpenJDK8 Windows编译

    通过对开源JDK的编译调试,我们可以深入了解JVM的运行原理。 If you continue to have problems with this issue, please visit the SDK team support page at http://go.microsoft.com 首先到下载freetype:https://www.freetype.org/ 我们可以下载已经编译好的lib和dll直接使用,而不需要自己编译: ? (本机网络很不好,我在阿里云服务器上下载再解压到本机 o(╯□╰)o) 我的百度云盘OpenJDK8源码:链接:https://pan.baidu.com/s/1ggEAGp1 密码:svh1 三、编译 OpenJDK版本 1、configure 到目前为止,我们已经完成了VS2010的安装、Cygwin及需要用到的工具的安装、freetype的编译生成、OpenJDK8的源码获取。

    4.9K111发布于 2018-03-01
  • 来自专栏yaphetsfang

    linux编译openjdk8

    最近在看《深入理解java虚拟机》,第一章主要讲java历史,有点意思的是编译openjdk,想自己试着搞搞,但是书上编译的是7,而且要配置一堆的配置文件,就上网查查,openjdk8貌似不用配置这么多 ,就试着编译8。 ** 编译 ** 系统:centOs 7.5 64位(刚开始用的腾讯云1核1g,编译的时候说内存不够,好在腾讯云5天免费退,改成1核2g) 1、下载openjdk8:https://pan.baidu.com cd /usr/openjdk/openjdk-8u40-src-b25-10_feb_2015/openjdk bash . /javac Test.java,编译一下文件,这是用openjdk编译出来的jdk来编译java文件 然后执行以下命令 gdb --args .

    2.3K10发布于 2020-08-05
  • 来自专栏码神路漫漫

    GO笔记之详解GO编译执行流程

    在这个过程中,我们用到了go run命令,它完成源码从编译到执行的整个过程。 image.png 今天来详细介绍下这个过程。简单理解,go run 可等价于 go build + 执行。 go build接收参数为.go文件或目录,默认情况下编译当前目录下所有.go文件。 介绍build选项 编译流程的演示需要go build提供的几个选项协助,执行go help build查看。如下: $ go help build ... 演示过程如下: $ go run -x --work hello.go WORK=/var/folders/bw/8yw8h4yj2vb6mxtb6t8t41f00000gn/T/go-build149627400 总结 本篇文章从go run引出Golang的编译执行流程。利用build提供的几个调试选项,我们实现了过程的逐步分解,最终比较详细地介绍了整个编译执行流程中的各个阶段。

    1.5K10发布于 2019-07-31
  • 来自专栏用户1069690的专栏

    Windows编译PHP8

    运行批处理脚本 脚本会自动创建所需的目录结构 phpsdk_buildtree phpdev 9.下载php8源代码 打开https://github.com/php/php-src/releases, 下载PHP8的源代码压缩包 10.解压PHP源代码 将源代码压缩包内php-src-php-8.0.0beta2目录下的所有文件解压到E:\php-sdk\phpdev\vs16\x64\php-8.0.0 OCI8 support --with-oci8-11g OCI8 support using Oracle 11g Instant Client --with-oci8-12c OCI8 support using Oracle Database 12c and php8ts.lib Checking for wspiapi.h ...

    1.8K20编辑于 2022-05-18
  • 来自专栏大话swift

    go 编译执行文件分发

    /xx)… 好了进入今天的正题golang build命令解析篇章吧 go build 是我们非常常用的命令,通过编译之后就能生成不依赖与我们当前环境的可执行文件。 也就是是说build会自动找寻main包的main所在的文件然后以包名命名,当指定了main所在文件则以执行文件命名 目前我们的执行文件是按照我们当前环境的编译出来的,那么怎么实现go编译出执行文件分发给 在这之前我们看看本地的编译环境 bogon:GitHub sk$ go envGOARCH="amd64"GOBIN="/Users/sk/Documents/GoProjects/gopath/bin"GOCACHE pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/j8/ /div/index.go Linux GOOS=linux GOARCH=amd64 go build ./div/index.go ? macOS本身就是Linux我们就分别编译之后执行啦 ?

    1.9K10发布于 2019-07-19
  • 来自专栏小许code

    Go语言编译链接过程

    我们知道Go是采用UTF-8是编码规则, 和ASCII码之间的联系呢?了解UTF-8之前我们先了解Unicode,因为ASCII码只能表示英语,不能表示其他语言。 对于ASCII码、Unicode、UTF-8之间的联系就不展开更多更细的总结,用个栗子来说明下我们编写的Go程序文件和编码之间关系。 Go语言的编译器同时使用静态类型检查和动态类型检查,这里只讨论静态类型检查。 0x0000 00000 (hello.go:31) MOVQ "".a+8(SP), AX 0x0005 00005 (hello.go:31) ADDQ 4:总结 写之前其实我对整个Go编译的过程,或者说是对程序的编译链接过程其实是不怎么了解的,在写之前查阅了不少资料,偶然发现《Go设计与实现》这本书把整个Go编译流程讲的很清楚了,当然这里总结大部分来自书籍上

    1.5K60编辑于 2023-03-07
  • 来自专栏luozhiyun的技术学习

    如何编译调试Go runtime源码

    这次我们简单看看如何编译调试 Go 的 runtime 源码,感兴趣的朋友可以自己手动操作一下。 编译修改 Go 源码进行调试 初次下载编译 我使用的是 centos 环境,所以需要先安装一下 yum -y install gcc; 然后下载 go 源码: [root@localhost src]# 编译好的 go 和 gofmt 在 bin 目录下: [root@localhost src]# cd .. return c } 然后进入到 go 的 src 目录下重新编译: [root@localhost src]# . :8 0x4bd300 483b6110 cmp rsp, qword ptr [rcx+0x10] test.go:8

    1.1K11发布于 2021-03-31
  • 来自专栏平也

    Go语言交叉编译工具gox

    基本介绍 交叉编译是为了在不同平台编译出其他平台的程序,比如在Linux编译出Windows程序,在Windows能编译出Linux程序,32位系统下编译出64位程序,今天介绍的gox就是其中一款交叉编译工具 export GOPATH=${HOME}/go export GOROOT=/usr/local/go export GOBIN=${GOPATH}/bin export PATH=${PATH}:$ go get github.com/mitchellh/gox 安装结束后,执行gox -h,如果有展示帮助信息,代表安装成功。 ➜ ~ gox -h Usage: gox [options] [packages] Gox cross-compiles Go applications in parallel. Platforms_1_8 = append(Platforms_1_7, []Platform{ {"linux", "mips", true}, {"linux", "mipsle", true

    2K20发布于 2020-04-03
  • 来自专栏luozhiyun的技术学习

    如何编译调试Go runtime源码

    这次我们简单看看如何编译调试 Go 的 runtime 源码,感兴趣的朋友可以自己手动操作一下。 编译修改 Go 源码进行调试 初次下载编译 我使用的是 centos 环境,所以需要先安装一下 yum -y install gcc; 然后下载 go 源码: [root@localhost src]# 编译好的 go 和 gofmt 在 bin 目录下: [root@localhost src]# cd .. return c } 然后进入到 go 的 src 目录下重新编译: [root@localhost src]# . :8 0x4bd300 483b6110 cmp rsp, qword ptr [rcx+0x10] test.go:8

    1.6K21发布于 2021-04-02
  • 来自专栏写代码的海盗

    在Ubuntu安装go编译环境

    在Ubuntu安装go编译环境 好记性不如烂笔头,所以趁热打铁记录下golang编译环境的安装过程。    hg clone -r release https://go.googlecode.com/hg/ go   这一步依赖于具体网速,有可能会慢一些。所以稍安勿躁.....    需要根据情况自行修改 export GOROOT=$HOME/gosrc/go export GOOS=linux export PATH=${PATH}:$HOME/gosrc/go/bin export GOPATH=$HOME/godist/bin   万事俱备,开始编译。 然后执行go 如果出现usage,就代表成功!

    1.7K40发布于 2018-04-16
  • 来自专栏Golang语言社区

    Go学习笔记:golang交叉编译

    http://solovyov.net/en/2012/03/09/cross-compiling-go/ 以上假定是64位架构,32位,修改GOARCH为386 说明: 这里并不是重新编译Go,因为安装 Go的时候,只是编译了本地系统需要的东西;而需要跨平台交叉编译,需要在Go中增加对其他平台的支持。 /make.bash 这么一个过程 交叉编译问题补充: 首先,建议安装Go语言通过源码安装,否则可能没有make.bash或make.bat程序。 之所以需要执行上面的这些步骤,是因为安装Go语言时,一些工具和平台相关的代码并没有生成,执行上面的步骤,并不是重新安装Go语言,而是生成交叉编译(目标平台)需要的工具和文件。 这些只是在第一次交叉编译的时候做。之后就不需要了。 为了更快的编译,可以 .

    2K40发布于 2018-03-20
领券