php+使用go编译,golang如何编译

ac16f21acd7f5ea8583be1f65e55e574.png

Go语言中使用 go build 命令主要用于编译代码。在包的编译过程中,若有必要,会同时编译与之相关联的包。

go build 有很多种编译方法,如无参数编译、文件列表编译、指定包编译等,使用这些方法都可以输出可执行文件。

go build 无参数编译

代码相对于 GOPATH 的目录关系如下:.

└── src

└── chapter11

└── gobuild

├── lib.go

└── main.go

main.go 代码如下:package main

import (

"fmt"

)

func main() {

// 同包的函数

pkgFunc()

fmt.Println("hello world")

}

lib.go 代码如下:package main

import "fmt"

func pkgFunc() {

fmt.Println("call pkgFunc")

}

如果源码中没有依赖 GOPATH 的包引用,那么这些源码可以使用无参数 go build。格式如下:go build

在代码所在目录(./src/chapter11/gobuild)下使用 go build 命令,如下所示:$ cd src/chapter11/gobuild/

$ go build

$ ls

gobuild lib.go main.go

$ ./gobuild

call pkgFunc

hello world

命令行指令和输出说明如下:

第 1 行,转到本例源码目录下。

第 2 行,go build 在编译开始时,会搜索当前目录的 go 源码。这个例子中,go build 会找到 lib.go 和 main.go 两个文件。编译这两个文件后,生成当前目录名的可执行文件并放置于当前目录下,这里的可执行文件是 go build。

第 3 行和第 4 行,列出当前目录的文件,编译成功,输出 go build 可执行文件。

第 5 行,运行当前目录的可执行文件 go build。

第 6 行和第 7 行,执行 go build 后的输出内容。

go build+文件列表

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

在代码代码所在目录(./src/chapter11/gobuild)中使用 go build,在 go build 后添加要编译的源码文件名,代码如下:$ go build main.go lib.go

$ ls

lib.go main main.go

$ ./main

call pkgFunc

hello world

$ go build lib.go main.go

$ ls

lib lib.go main main.go

命令行指令和输出说明如下:

第 1 行在 go build 后添加文件列表,选中需要编译的 Go 源码。

第 2 行和第 3 行列出完成编译后的当前目录的文件。这次的可执行文件名变成了 main。

第 4~6 行,执行 main 文件,得到期望输出。

第 7 行,尝试调整文件列表的顺序,将 lib.go 放在列表的首位。

第 8 行和第 9 行,编译结果中出现了 lib 可执行文件。

使用“go build+文件列表”方式编译时,可执行文件默认选择文件列表中第一个源码文件作为可执行文件名输出。

go build+包

“go build+包”在设置 GOPATH 后,可以直接根据包名进行编译,即便包内文件被增(加)删(除)也不影响编译指令。

1) 代码位置及源码

相对于GOPATH的目录关系如下:.

└── src

└── chapter11

└──goinstall

├── main.go

└── mypkg

└── mypkg.go

main.go代码如下:package main

import (

"chapter11/goinstall/mypkg"

"fmt"

)

func main() {

mypkg.CustomPkgFunc()

fmt.Println("hello world")

}

mypkg.go代码如下:package mypkg

import "fmt"

func CustomPkgFunc() {

fmt.Println("call CustomPkgFunc")

}

2) 按包编译命令

执行以下命令将按包方式编译 goinstall 代码:$ export GOPATH=/home/davy/golangbook/code

$ go build -o main chapter11/goinstall

$ ./goinstall

call CustomPkgFunc

hello world

代码说明如下:

第 1 行,设置环境变量 GOPATH,这里的路径是笔者的目录,可以根据实际目录来设置 GOPATH。

第 2 行,-o执行指定输出文件为 main,后面接要编译的包名。包名是相对于 GOPATH 下的 src 目录开始的。

第 3~5 行,编译成功,执行 main 后获得期望的输出。

更多golang知识请关注golang教程栏目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php document.getel,javascript 密码强弱度检测万能插件_javascript技巧

网页密码强弱度检测请输入密码弱中强所需JS下载//checkpwd.js////*Author Netcent Aquany//*function GEId(sID){try{return document.getElementById(sID)}catch(e){};}function GetEl(szN){try{return document.getElementsByName(szN)[0]}catch(e){};}function GetElCol(szN…

session丢失php,PHP Session丢失无效问题总结

前两天玩了一下云边的轻博客,觉得东西比较小巧,自己也想弄个东西,就直接放到服务器里装了,结果啊,$_SESSION丢失了好几天~情况描述:$_SESSION只能在当前的访问里有效,第二次请求就像之前执行过一样,$_SESSION里的内容会没了,就一个array();下面是我对这个问题的查找…

转码java,java转码

媒体处理 MPC媒体处理(Media Processing Center)为海量多媒体数据提供经济、高效、弹性的转码和音视频处理服务,支持丰富的转码格式,适合在PC、TV以及移动终端上播放,匹配多种商业场景媒体处理媒体处理(Media Processing Center)为海量多媒体…

archives_do.php,织梦后台文章管理中增加批量添加tag标签功能

需求背景: 之前发布了不少文章,后来发现之前的这些文章当时发布时都没有添加tag标签,然而现在需要都添加上tag标签,然而这个在默认的织梦后台是没办法批量实现的,只能一篇篇文章去修改。思考: 织梦原本的文…

php ioc容器,PHP 在Swoole中使用双IoC容器实现无污染的依赖注入

容器(container)技术(可以理解为全局的工厂方法), 已经是现代项目的标配. 基于容器, 可以进一步实现控制反转, 依赖注入. Laravel 的巨大成功就是构建在它非常强大的IoC容器 illuminate/container 基础上的. 而 PSR-11 定义了标准的 container , 让更多的 PHP 项目依赖容器实现…

oracle19c监听服务启动失败,Oracle19c安装(有失败成功记录)

Oracle19c安装(有失败成功记录)失败过程失败安装设置 (图为安装成功后获取)成功过程安装设置配置监听桌面类与服务器类的区别总结说明:失败过程失败问题一模一样,无论安装成功或者失败都出现“无法添加用户XXXX到%2%组中”的弹窗,都是点6下继…

oracle立即关闭数据库,Oracle数据库的起步和关闭

Oracle数据库的启动和关闭要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆,启动一个数据库需要三个步骤:1、 创建一个Oracle实例(非安装阶段)2、 由实例安装数据库(安装阶段)3、 打开数据…

oracle空例程,2018.5.29 Oracle连接到空闲例程

解决方法如下:1、通过cmd命令窗启动Oracle:(最好是以管理员身份启动)C:\Users\Administrator>sqlplus /nologSQL>conn /as sysdba 或者这种 conncet [email protected] as sysdba //sys是用户名 123456是密码 。 后面的是数据库名字SQL>startup…

linux ospf 命令,OSPF单区域配置 - linuxprobe2020的个人空间 - OSCHINA - 中文开源技术交流社区...

为了弥补距离矢量路由协议的不足,IEFI组织开发了一种基于链路状态的内部网关协议OSPF实验环境:红,绿,蓝三个颜色区域代表三个不同网络的办公场所,要求使用OSPF协议实现网络互通。pc1:172.16.1.1pc2:172.16.2.1pc3:172.…

Linux内核权限维持,Linux权限维持笔记

一、修改文件/终端的属性1、修改文件创建时间如果蓝队是按照文件修改时间来判断后门的话,比如现在我们上传一个shell,可以看到shell文件与原文件的时间是不同的解决方法:touch -r teamserver shell.php现在再来看原文件与shell文件的修改时间…

ubuntu下的linux怎样备份文件,Ubuntu系统如何备份还原?Ubuntu系统备份还原教程

Ubuntu系统如何备份还原?Ubuntu系统是一个以桌面应用为主的开源操作系统,专为开发团队而打造!无论你使用的是什么操作系统,都有可能出现电脑无法修复的故障,这时候备份还原功能就显得非常重要了。今天小编要给大家分享…

jenkins linux编译c,【Linux】【Jenkins】代码编译和执行过程中的问题汇总

1.问题1:java.io.FileNotFoundException: /root/.jenkins/workspace/Videoyi_AutoTest_Maven/config-log4j\log4j.xml (No such file or directory)该问题是由于代码是在windows下编写和编译的,使用的都是\\来实现目录结构的,结果到linux下的…

linux cd -目录,linux cd

cd -返回之前的目录cd !$ 把上个命令的参数作为这个命令的参数阅读目录(Content)1.命令格式:cd [目录名]2.命令功能切换当前目录至 [目录名]3. 常用范例1.进入系统根目录命令:cd /说明:进入系统根目录,上面命令执行完后拿ls命令看一下&#x…

linux清理整个磁盘空间,一次Linux磁盘空间清理的经历

最近,在Linux上运行BPM应用总是报没有空间的错误。经过一番调查和周折,终于找出了问题的症结,并顺利解决。今天,我把过程总结一下,方便自己或其他有类似问题的朋友参考。这里不对具体命令的具体各种参数做深入介绍&…

linux6.5 查看分辨率命令,centos6.5跟centos7的top命令中移动查看顺序的指令怎么不一样...

top 命令 移动查看顺序centos6.5 以下 top -ab -n 1按o 按大写字母可以调顺序 大写字母往左 小写往右f,o . Fields/Columns: ‘f’ add or remove; ‘o’ change display orderF or O . Select sort field查看cpu和内存占用排序,可以直接快捷方式但是在centos7中快捷键用大小写…

linux nfs spec,创建 NFS Ubuntu Linux 服务器卷 - Azure Kubernetes Service | Microsoft Docs

您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.在 Azure Kubernetes 服务 (AKS) 中手动创建和使用 NFS(网络文件系统)Linux 服务器卷4/25/2019本文内容基于容器…

c语言中字符数字加'0',C语言中的NULL与转义字符'\0'以及数值0的关系

以下两种只是一个巧合,只不过地址值的数值为0而已。0本身只不过是一个可以显示的字符,与内存并没有直接关系。在0与ASCII表中关联NULL做了关联,这样使得输入转义字符\0,也可以将一个变量赋值为NULL。而\0对应的ASCII码又是第0号&a…

c语言程序设计杨辉三角过程,C语言编程 打印杨辉三角

在做这道题时首先要观察杨辉三角的规律11 11 2 11 3 3 11 4 3 4 1……可以看出1.每行的数字个数与所处行数相等2.除去每行第一个和最后一个数字唯一,其他数字都等于头顶元素加头顶前一个元素源代码:#include#includevoid PrintY(int length, int array[][100]){int …

c语言中的所有关键字,C语言中的32个关键字

C语言中的32个关键字数据类型关键字(12个)(1) char:声明字符型变量或函数(2) double:声明双精度变量或函数(3) enum:声明美剧类型(4) float:声明浮点型变量或函数(5) int:声明整型变量或函数(6) …

c语言手游常用代码,c语言源代码【操作流程】

很多小伙伴都遇到过c语言源代码的困惑吧,一些朋友看过网上零散的c语言源代码的处理方法,并没有完完全全明白c语言源代码是如何解决的,今天小编准备了简单的解决办法,只需要按照1:编写C源代码for_learning_compile.c2&a…