GO语言如何编译发布到Linux
在命令行执行如下指令
我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、镇平ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的镇平网站制作公司
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go //开始编译程序
Go语言编译成aar并调试
go及gomobile的环境配置这里就不介绍了,直接说aar的生成和使用。
1. 设置环境变量GOPATH
GOPATH的值可以有多个,用半角分号间隔,但不能以其结束,设置完成后需要重新做 gomobile init 。
2. 在GOPATH里创建src文件夹,用于存放go的包和源文件
3. 在src中创建hello文件夹(go文件的包名)
4. 在hello中创建hello.go文件,并输入内容
5. 编译
执行命令: gomobile bind -target=android hello
会生成一个hello.aar文件
6. 导入到android工程
将hello.aar文件放入工程的libs中,并配置build.gradle
在根结点加入:
在dependencies结点下加入依赖:
7. 在Java中测试
运行后,结果会输出 Hello, Android and Gopher
如何配置go语言开发环境
1、下载go的zip文件。并且一定要把文件解压到c:\go目录下。
2、配置windows的高级环境变量。包括:GOROOT、GOOS、GOBIN、GOARCH。并且在path变量里面把c:\go\bin加入。以便可以在命令行直接运行go命令。
举例:我的机器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安装路径;
F:\workspace\goSample01是我写的go语言项目的工程目录;
F:\workspace\goSample01\bin是go语言项目的工程目录下的可执行文件路径;
3、在完成环境变量配置后,打开一个命令行窗口,直接输入go,然后回车,看看是否出现go的帮助信息。如果出现,那么go的基本环境就OK了。
注意:这个基本环境不包含开发工具,也不能直接编译带C代码的go程序。
4、(可选)为了支持Import远程包,最好装个gomingw。下载地址:。如果下的是压缩包,请把它解压到C盘。例如,C:\gowin-env。里面有个Console.bat是以后使用go get的环境。举例:有个文件a.go,里面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
为了编译该a.go文件,需要启动Console.bat,然后在该命令行窗口,进入c:\go\src目录下,执行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go会自动下载该远程包并编译和安装这些包。
配置goclipse(可选)
(如果不喜欢eclipse开发工具,请跳过这个配置。)
1、下载并安装goclipse插件。Goclipse是go语言for eclipse的插件,下载地址:
2、启动eclipse并创建go项目。然后写个最简单的helloworld.go文件,并运行。代码如下:
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可选)
如果不需要go语法辅助和eclipse里面的(按ALT+/)弹出go语言自动辅助功能,请跳过这个配置。
1、下载gocode的zip文件,解压后放在go的bin目录下。
2、下载并安装Git软件。并且在path里面配置git的执行路径。例如c:\git\bin
3、在命令行执行:go build .\gocode。如果一切正常,那么将会编译生成一个gocode.exe文件在go的bin目录下。如果编译失败,那么就转第4步。
4、如果第3步直接编译gocode源文件成功,那就直接到第5步。否则,就需要通过git下载gocode源文件,然后再编译。在命令行执行:go get -u github.com/nsf/gocode 。就会生成gocode.exe文件。
5、在goclipse插件里面指定gocode的路径。就可以在elcipse里面调用gocode来帮助写编码了。
从开发工具这块看,go语言还不够成熟,开发工具都还不完善,有待改进。
下载go-tour教程源代码(可选)
Google有个在线运行go语言的教程(),很不错。支持在web上直接运行大部分的go程序,想了解这个教程的源代码的朋友可以通过以下方式获取。如果没兴趣,可以跳过这个步骤。
windows 怎么编译 go语言
1、解压压缩包到go工作目录,如解压到E:\opensource\go\go,解压后的目录结构如下:
E:\opensource\go\go
├─api
├─bin
│ ├─go.exe
│ ├─godoc.exe
│ └─gofmt.exe
├─doc
├─include
├─lib
├─misc
├─pkg
├─src
└─test
2、增加环境变量GOROOT,取值为上面的go工作目录
3、Path环境变量中添加";%GOROOT%\bin",以便能够直接调用go命令来编译go代码,至此go编译环境就配置好了
注:如果不想手动设置系统环境变量,也可下载go启动环境批处理附件,
修改goenv.bat文件中的GOROOT值为上面的go工作目录后直接双击该bat文件,go编译环境变量即设置完成。
4、测试go编译环境,启动一个cmd窗口,直接输入go,看到下面的提示就是搭建成功了
E:\opensource\go\gogo
Go is a tool for managing Go source code.
Usage:
go command [arguments]
The commands are:
build compile packages and dependencies
clean remove object files
doc run godoc on package sources
env print Go environment information
fix run go tool fix on packages
fmt run gofmt on package sources
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet run go tool vet on packages
Use "go help [command]" for more information about a command.
Additional help topics:
gopath GOPATH environment variable
packages description of package lists
remote remote import path syntax
testflag description of testing flags
testfunc description of testing functions
Use "go help [topic]" for more information about that topic.
5、编译helloworld测试程序,go语言包中test目录带有helloworld.go测试程序,源码见"附一 helloworld.go",
直接调用"go build helloworld.go"就生成了"helloworld.exe"可执行程序,运行一下这个程序看到了我们期望的hello,wolrd。
E:\opensource\go\go\testgo build helloworld.go
E:\opensource\go\go\testhelloworld.exe
hello, world
E:\opensource\go\go\test
附一 helloworld.go
// cmpout
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Test that we can do page 1 of the C book.
package main
func main() {
print("hello, world\n")
}
Go语言命令行利器cobra使用教程
cobra是一个提供简单接口来创建强大的现代CLI界面的库类似git git tools,cobra也是一个应用程序,它会生成你的应用程序的脚手架来快速开发基于cobra的应用程序
cobra提供:
cobra建立在命令、参数、标志的结构之上
commands代表动作,args是事物,flags是动作的修饰符
最好的应用程序在使用时读起来就像句子,因此,用户直观地知道如何与它们交互
模式如下:APPNAME VERB NOUN --ADJECTIVE. or APPNAME COMMAND ARG --FLAG(APPNAME 动词 名词 形容词 或者 APPNAME 命令 参数 标志)
一些真实世界的好例子可以更好地说明这一点
kubectl 命令更能体现APPNAME 动词 名词 形容词
如下的例子,server 是command,port是flag
这个命令中,我们告诉git 克隆url
命令是应用程序的中心点,应用程序支持的每一个交互都包含在一个命令中,命令可以有子命令,也可以运行操作
在上面的例子中,server是命令
更多关于cobra.Command
flag是一种修改命令行为的方式,cobra支持完全兼容POSIX标志,也支持go flag package,cobra可以定义到子命令上的标志,也可以仅对该命令可用的标志
在上面的命令中,port是标志
标志的功能由 pflag library 提供,pflag library是flag标准库的一个分支,在添加POSIX兼容性的同时维护相同的接口。
使用cobra很简单,首先,使用go get按照最新版本的库,这个命令会安装cobra可执行程序以及库和依赖项
下一步,引入cobra到应用程序中
虽然欢迎您提供自己的组织,但通常基于Cobra的应用程序将遵循以下组织结构:
在Cobra应用程序中,main.go文件通常非常简单。它有一个目的:初始化Cobra。
使用cobra生成器
cobra提供了程序用来创建你的应用程序然后添加你想添加的命令,这是将cobra引入应用程序最简单的方式
这儿 你可以发现关于cobra的更多信息
要手动实现cobra,需要创建一个main.go 和rootCmd文件,可以根据需要提供其他命令
Cobra不需要任何特殊的构造器。只需创建命令。
理想情况下,您可以将其放在app/cmd/root.go中:
在init()函数中定义标志和处理配置
例子如下,cmd/root.go:
创建main.go
使用root命令,您需要让主函数执行它。为清楚起见,Execute应该在根目录下运行,尽管它可以在任何命令上调用。
在Cobra应用程序中,main.go文件通常非常简单。它有一个目的:初始化Cobra。
可以定义其他命令,通常每个命令在cmd/目录中都有自己的文件。
如果要创建版本命令,可以创建cmd/version.go并用以下内容填充它:
如果希望将错误返回给命令的调用者,可以使用RunE。
然后可以在execute函数调用中捕获错误。
标志提供修饰符来控制操作命令的操作方式。
由于标志是在不同的位置定义和使用的,因此我们需要在外部定义一个具有正确作用域的变量来分配要使用的标志。
有两种不同的方法来分配标志。
标志可以是“持久”的,这意味着该标志将可用于分配给它的命令以及该命令下的每个命令。对于全局标志,在根上指定一个标志作为持久标志。
也可以在本地分配一个标志,该标志只应用于该特定命令。
默认情况下,Cobra只解析目标命令上的本地标志,而忽略父命令上的任何本地标志。通过启用Command.TraverseChildren,Cobra将在执行目标命令之前解析每个命令上的本地标志。
使用viper绑定标志
在本例中,持久标志author与viper绑定。注意:当用户未提供--author标志时,变量author将不会设置为config中的值。
更多关于 viper的文档
Flags默认是可选的,如果希望命令在未设置标志时报告错误,请根据需要进行标记:
持久性Flags
可以使用命令的Args字段指定位置参数的验证。
内置了以下验证器:
在下面的示例中,我们定义了三个命令。两个是顶级命令,一个(cmdTimes)是顶级命令之一的子命令。在这种情况下,根是不可执行的,这意味着需要一个子命令。这是通过不为“rootCmd”提供“Run”来实现的。
我们只为一个命令定义了一个标志。
有关标志的更多文档,请访问
对于一个更完整的例子更大的应用程序,请检查 Hugo 。
当您有子命令时,Cobra会自动将help命令添加到应用程序中。当用户运行“应用程序帮助”时,将调用此函数。此外,help还支持所有其他命令作为输入。例如,您有一个名为“create”的命令,没有任何附加配置;调用“app help create”时,Cobra将起作用。每个命令都会自动添加“-help”标志。
以下输出由Cobra自动生成。除了命令和标志定义之外,不需要任何东西。
帮助就像其他命令一样。它周围没有特殊的逻辑或行为。事实上,你可以提供你想提供的。
您可以为默认命令提供自己的帮助命令或模板,以用于以下功能:
当用户提供无效的标志或无效的命令时,Cobra通过向用户显示“用法”来响应。
你可以从上面的帮助中认识到这一点。这是因为默认帮助将用法作为其输出的一部分嵌入。
您可以提供自己的使用函数或模板供Cobra使用。与帮助一样,函数和模板也可以通过公共方法重写:
如果在root命令上设置了version字段,Cobra会添加一个顶级的'--version'标志。运行带有“-version”标志的应用程序将使用版本模板将版本打印到标准输出。可以使用cmd.SetVersionTemplate(s string)函数自定义模板。
可以在命令的主运行函数之前或之后运行函数。PersistentPreRun和PreRun函数将在运行之前执行。PersistentPostRun和PostRun将在运行后执行。如果子函数不声明自己的函数,则它们将继承Persistent*Run函数。这些函数按以下顺序运行:
输出:
当发生“未知命令”错误时,Cobra将打印自动建议。这使得Cobra在发生拼写错误时的行为类似于git命令。例如:
基于注册的每个子命令和Levenshtein距离的实现,建议是自动的。匹配最小距离2(忽略大小写)的每个已注册命令都将显示为建议。
如果需要在命令中禁用建议或调整字符串距离,请使用:
or
您还可以使用SuggestFor属性显式设置将为其建议给定命令的名称。这允许对在字符串距离方面不接近的字符串提供建议,但在您的一组命令中是有意义的,并且对于某些您不需要别名的字符串。例子:
Cobra可以基于子命令、标志等生成文档。请在 docs generation文档 中阅读更多关于它的信息。
Cobra可以为以下shell生成shell完成文件:bash、zsh、fish、PowerShell。如果您在命令中添加更多信息,这些补全功能将非常强大和灵活。在 Shell Completions 中阅读更多关于它的信息。
Cobra is released under the Apache 2.0 license. See LICENSE.txt
Go语言编译器TinyGo,基于LLVM,在微控制器和小系统上编译和运行
TinyGo是一个为微控制器、WebAssembly(Wasm)和命令行工具等小型场景设计的Go语言编译器。TinyGo重用了Go语言工具和LLVM使用的库,以编译用Go语言编写的程序。目前,该项目在GitHub上已经积累了10.1k的Star。
如下为一个示例程序,当运行在任何支持的带板载LED的主板上时,则会点亮内置LED。
上述程序可以在单片机、Adafruit ItsyBitsy M0微控制器或任何支持的带内置LED的板上进行编译和不需要修改的运行,只要设置正确的TinyGo编译器目标即可。例如,设置如下目标可以编译和点亮 单片机。
项目概述
TinyGo项目旨在将Go语言引入到具有单进程或核心的微控制器和小系统。TinyGo类似于emgo,但主要的区别在于作者想要保留Go内存模型。另一个区别在于TinyGo在内部使用LLVM,因而可以获得更小更高效的代码以及更高的灵活性。
创建TinyGo项目的初衷是,如果Python可以在微控制器上运行,Go语言当然也应该能够在更低级微设备上运行。
支持设备
你可以为微控制器、WebAssembly和Linux编译TinyGo程序。目前,TinyGo支持以下85种微处理器板。
更多技术细节请参阅原项目。
本文标题:go语言的编译命令行 go语言的编译器
浏览路径:http://lswzjz.com/article/dodcood.html