Go语言学习札记—— 第二章 Go编程环境(2)

2.2 运行

2.2.1 Hello World 实例

hello.go 代码:

package main import "fmt" func main() { fmt.Printf("Hello, world; 世界/n") }

编译代码:

$8g hello.go

8g 是针对i386 指令的编译器,它的输出文件为 hello.8 。其中 ‘8’ 表示文件是 i386 指令的输出文件。 如果是amd64arm 处理器,后缀则为 ‘6’ ‘5’ 。 也就是说,如果你用的是amd64 处理器,那么应该用6g 命令编译, 输出的文件为hello.6

链接代码:

$8l hello.8

运行程序:

$hello.out 

或者使用

$8l -o hello.exe hello.8

直接输出 hello.exe 程序

如果是编译更复杂的过程,那么可能需要使用Makefile 。我习惯用Rake 去编译代码,这时就需要使用Rakefile.

Rakefile 文件实例:

# # Go语言项目构建Rakefile # #处理扩展名 def ext(fn, newext) fn.sub(//.[^.]+$/, newext) end #与平台相关常量 O=8 G_AS="#{O}a" G_CC="#{O}c" G_GC="#{O}g" G_LD="#{O}l" G_GPK="gopack" G_FMT="gofmt" desc "默认任务(compile)。" task :default => [:compile] #项目名称 TARG="gojson" SRCDIR="." BINDIR="." OBJDIR="." OUTDIR="." #源代码 #FILES = FileList['reader.go'] FILES = FileList['writer.go','reader.go'] #不处理的文件 #SRCFILES.exclude("test") SRCFILES=FILES.collect {|fn| "#{SRCDIR}/#{fn}" } #目标文件 OBJFILES = FILES.collect { |fn| filename=ext(fn,".8") "#{OBJDIR}/#{filename}" } desc "编译项目源代码,并生成目标文件" task :compile do puts "开始编译项目源代码..." #sh "#{G_GC} -o #{OBJFILES} #{SRCFILES}" FILES.each do |fn| srcfile="#{SRCDIR}/#{fn}" filename=ext(fn,".8") objfile="#{OBJDIR}/#{filename}" sh "#{G_GC} -o #{objfile} #{srcfile}" end end desc "链接目标文件,并生成可执行文件" file "link" => :compile do |t| puts "开始链接目标文件..." #sh "#{G_LD} -o #{TARG}.exe #{OBJFILES}" FILES.each do |fn| filename=ext(fn,".8") objfile="#{OBJDIR}/#{filename}" fileexe=ext(fn,".exe") outfile="#{OUTDIR}/#{fileexe}" sh "#{G_LD} -o #{outfile} #{objfile}" end end desc "运行生成的" task :run => ["link"] do sh "#{TARG}.exe" end #"生成包文件" file "#{TARG}.a" => :compile do puts "开始生成包文件..." sh "#{G_GPK} crg #{TARG}.a #{TARG}.8" end desc "生成包文件" task :pkg => ["#{TARG}.a"] do end desc "构建项目..." task :build =>["link"] do puts "构建项目结束" end desc "格式化源代码" file "fmt" do |t| puts "开始格式文件..." FILES.each do |fn| filename=ext(fn,".8") sh "#{G_FMT} -w #{fn} " end end desc "删除生成的临时文件" task :clean do rm_f FileList['*.8'] Dir['*~'].each { |fn| rm_f fn } end desc "删除所有生成的文件" task :clobber => [:clean] do rm_f FileList['*.a','*.exe'] end

使用说明:

需要修改的是源文件名字,在

FILES = FileList['writer.go','reader.go']

处添加你要编译的代码文件列表。

$rake compile // 编译代码

$rake link   // 链接代码

$rake run // 编译代码

$rake clean // 删除生成的临时文件

$rake clobber // 删除所有生成的文件

$rake clobber // 删除所有生成的文件

$rake fmt      // 格式化源代码

2.2.2 配置开发环境

 Go 源代码文件是 UTF-8 编码的文件,当前所有的文本编辑器基本上都支持。在 Go 的发行包里有针对常用编辑器的代码高亮控件如: Vim 、 Emacs 等编辑器。我使用的是 Editplus 编辑器,下面以 Editplus 为例介绍配置 Go 开发环境。

编译配置:

链接配置:

运行配置:

代码界面:

提示:
Editplus工具快捷键:CTRL+1 编译
CTRL+2 链接
CTRL+3 运行

 

你可能感兴趣的:(GO,go,语言,编程,项目构建,makefile,ext)