1. 如何在編譯後,指定安裝路徑
1. 安裝目錄變數
在Makefile中,安裝目錄同樣需要使用變數來指定,這樣就可以很方便的修改文件的安裝路徑。安裝目錄的標准命名下邊將一一介紹。這些變數基於標準的文件系統結構,這些變數的變種在SVR4、4.4BSD、linux、Ultrix v4以及其它現代操作系統中都有使用。
安裝者希望在調用make是改變這些值,(例如 make prefix=/usr install),或者在配置時改變這些值(例如 configure –prefix=/usr)。GNU包不會對在該系統上這些變數適合於哪些值做任何猜想,或者說GNU包不會猜測這些包應該被安裝到哪裡是更合適的:GNU包使用預設的特定設置是為了以便於所有的GNU包行為一致,它允許安裝者做任何自己想要的布局。
以下所羅列的兩個變數是指定安裝文件的根目錄。所有其它安裝目錄都是它們的子目錄。注意:文件不能直接安裝在這兩個目錄下。
prefix
這個變數(通常作為實際文件安裝目錄的父目錄,可以理解為其它實際文件安裝目錄的前綴)用於構造下列(除這兩個安裝根目錄以外的其它目錄變數)變數的預設值。變數「prefix」預設值是「/usr/local」。創建完整的GNU系統時,變數prefix的預設值是空值,「/usr」是「/」的符號連接符文件。(如果使用「Autoconf」工具,它應該寫成「@prefix@」)。注意:當更改了變數「prefix」以後重新執行「make install」,不會導致可執行程序(終極目標)的重建。
exec_prefix
這個前綴用於構造下列變數的預設值。變數「exec_prefix」預設值是「$(prefix)」(如果使用「Autoconf」工具,它應該寫為「@exec_prefix@」)。通常,「$(exec_prefix)」目錄中的子目錄下存放和機器相關文件(例如可執行文件和常式庫)。「$(prefix)」目錄的子目錄存放通用的一般文件。同樣:改變「exec_prefix」的值之後執行「make install」,不會重建可執行程序(終極目標)。
文件(包括可執行程序、說明文檔等)的安裝目錄:
bindir
用於安裝一般用戶可運行的可執行程序。通常它的值為:「/usr/local/bin」,使用時應寫為:「$(exec_prefix)/bin」。(使用「Autoconf」工具時,應該為「@bindir@」)
sbindir
安裝可在shell中直接調用執行的程序。這些命令僅對系統管理員有用(系統管理工具)。通常它的值為:「/usr/local/sbin」,要求在使用時應寫為:「$(exec_prefix)/sbin」。(使用「Autoconf」工具時,應該為「@sbindir@」)
libexecdir
用於安裝那些通常不是由用戶直接使用,而是由其它程序調用的可執行程序。通常它的值為:「/usr/local/libexec」,要求在使用時應寫為:「$(exec_prefix)/libexec」。(使用「Autoconf」工具時,應該為「@libexecdir@」)
程序執行時使用的數據文件可從以下兩個方面來分類:
1. 是否可由程序更改。分為兩類:程序可修改和不可修改的文件(雖然用戶可編輯其中某些文件)。
2. 是否和體系結構相關。分為兩類:體系結構無關文件,可被所有類型的機器共享;體系結構相關文件,僅可被相同類型機器、操作系統共享;其它的就是那些不能被任何兩個機器共享的文件。
這樣就存在六種不同的可能。除編譯生成的目標文件(.o文件)和庫文件以外,不推薦使用那些和特定機器體系結構相關的文件,使用和體系無關的數據文件更加簡潔,而且,它的實現也並不非常困難。
在Makefile中應該使用以下變數為不同類型的文件指定對應的安裝目錄:
`datarootdir'
The root of the directory tree for read-only architecture-independent data files. This should normally be /usr/local/share, but write it as $(prefix)/share. (If you are using Autoconf, write it as `@datarootdir@'.) `datadir''s default value is based on this variable; so are `infodir', `mandir', and others.
Datarootdir
機器體系結構無關的只讀數據文件的根目錄。通常它的值為:「/usr/local/share」,使用時應寫為:「$(prefix)/share」。(使用「Autoconf」工具時,應該為「@datarootdir@」)。『datadir』的預設值是基於這個變數的,`infodir', `mandir'等其它變數的值也是如此。
datadir
用於安裝和機器體系結構無關的只讀數據文件。通常它的值與』datarootdir』一樣,但是我們使用兩個變數是為了用戶能夠移動一些程序特定的文件而不修改如man 文件、info文件的路徑。通常它的值為:「/usr/local/share」,使用時應寫為:「$(prefix)/share」。(使用「Autoconf」工具時,應該為「@datadir@」)。「$(infodir)」和「$(includedir)」作為例外情況,參考後續對它們的詳細描述。
Datadir的定義對所有包都一樣,因此你應該安裝你的數據在它的子目錄下。大部分包安裝它們的數據在如此目錄下:$(datadir)/package-name/.
sysconfdir
用於安裝從屬於特定機器的只讀數據文件,包括:主機配置文件、郵件服務、網路配置文件、「/etc/passwd」文件等。所有該目錄下的文件都應該是普通文本文件(可識別的「ASCII」碼文本文件)。通常它的值為:「/usr/local/etc」,在使用時應寫為:「$(prefix)/etc」。(使用「Autoconf」工具時,應該為「@sysconfdir@」)。
不要將可執行文件安裝在這個目錄下(可執行文件的安裝目錄應該是「$(libexecdir)」或者「$(sbindir)」)。也不要在這個目錄下安裝那些需要更改的文件(系統的配置文件等)。這些文件應該安裝在目錄「$(localstatedir)」下。
sharedstatedir
用於安裝那些可由程序運行時修改的文件,這些文件與體系結構無關。通常它的值為:「/usr/local/com」,要求在使用時應寫為:「$(prefix)/com」。(使用「Autoconf」工具時,應該為「@sharedstatedir@」)
localstatedir
用於安裝那些可由程序運行時修改的文件,但這些文件和體系結構相關。用戶沒有必要通過直接修改這些文件來配置軟體包,對於不同的配置文件,將它們放在「$(datadir)」或者「$(sysconfdir)」目錄中。「$(localstatedir)」值通常為:「/usr/local/var」,在使用時應寫為:「$(prefix)/var」。(使用「Autoconf」工具時,應該為「@localstatedir@」)
libdir
用於存放編譯後的目標文件(.o)文件庫文件(文檔文件或者執行的共享庫文件)。不要在此目錄下安裝可執行文件(可執行文件應該安裝在目錄「$(libexecdir)」下)。變數libdir值通常為:「/usr/local/lib」,使用時應寫為:「$(exec_prefix)/lib」。(使用「Autoconf」工具時,應該為「@libdir@」)
infodir
用於安裝軟體包的 Info 文件。它的預設值為:「/usr/local/info」,使用時應寫為:「$(prefix)/info」。(使用「Autoconf」工具時,應該為「@infodir@」)
lispdir
用於安裝軟體包的Emacs Lisp 文件的目錄。它的預設值為:「/usr/local/share/emacs/site-lisp」,使用時應寫為:「$(prefix)/share/emacs/site-lisp」。當使用Autoconf工具時,應將寫為「@lispdir@」。為了保證「@lispdir@」能夠正常工作,需要在「configure.in」文件中包含如下部分:
lispdir='${datadir}/emacs/site-lisp'
AC_SUBST(lispdir)
includedir
用於安裝用戶程序源代碼使用「#include」包含的頭文件。它的預設值為:「/usr/local/include」,使用時應寫為:「$(prefix)/include」。(使用「Autoconf」工具時,應該為「@includedir@」)。
除gcc外的大多數編譯器不會在目錄「/usr/local/include」中搜尋頭文件,因此這種方式只適用gcc編譯器。這一點應該不是一個問題,因為很多情況下一些庫需要gcc才能工作。對那些依靠其它編譯器的庫文件,需要將頭文件安裝在兩個地方,一個由變數「includedir」指定,另一個由變數「oldincludedir」指定。
oldincludedir
它所指定的目錄也同樣用於安裝頭文件,這些頭文件用於非gcc的編譯器。它的預設值為:「/usr/include」。(使用「Autoconf」工具時,應該為「@oldincludedir@」)。
Makefile在安裝頭文件時,需要判斷變數「oldincludedir」的值是否為空。如果為空,就不使用它進行頭文件的安裝(一般是安裝完成「/usr/local/include」下的頭文件之後才安裝此目錄下的頭文件)。
一個軟體包的安裝不能替換該目錄下已經存在的頭文件,除非是同一個軟體包(重新使用相同的軟體包在此目錄下安裝頭文件)。例如,軟體包「Foo」需要在「oldincludedir」指定的目錄下安裝一個頭文件「foo.h」時,可安裝的條件為:1.目錄「$(oldincludedir)」目錄下不存在頭文件「foo.h」;2. 已經存在頭文件「foo.h」,存在的頭文件「foo.h」是之前軟體包「Foo」安裝的。
檢查頭文件「foo.h」是否來自於軟體包Foo,需要在頭文件的注釋中包含一個「magic」字元串,使用命令「grep」來在該文件中查找這個magic。
`docdir'
The directory for installing documentation files (other than Info) for this package. By default, it should be /usr/local/share/doc/yourpkg, but it should be written as $(datarootdir)/doc/yourpkg. (If you are using Autoconf, write it as `@docdir@'.) The yourpkg subdirectory, which may include a version number, prevents collisions among files with common names, such as README.
這個目錄安裝除了Info外的該包提供的文檔,它的預設值/usr/local/share/doc/yourpkg,使用時應寫為:「$(datarootdir)/doc/yourpkg」。(使用「Autoconf」工具時,應該為「@docdir@」)。Yourpkg子目錄可能包括版本號,為了阻止具有相同文件名字的文件沖突,例如README。
`infodir'
The directory for installing the Info files for this package. By default, it should be, but it should be written as (If you are using Autoconf, write it as `@infodir@'.) infodir is separate from docdir for compatibility with existing practice.
這個目錄安裝該包的info文件。它的預設值是:/usr/local/share/info, 使用時應寫成:$(datarootdir)/info.(使用「Autoconf」工具時,應該為「@infodir@」).infodir從docdir中單獨分離出來為了兼容已經存在的practice。
`htmldir'
`dvidir'
`pdfdir'
`psdir'
Directories for installing documentation files in the particular format. (It is not required to support documentation in all these formats.) They should all be set to $(docdir) by default. (If you are using Autoconf, write them as `@htmldir@', `@dvidir@', etc.) Packages which supply several translations of their documentation should install them in `$(htmldir)/'ll, `$(pdfdir)/'ll, etc. where ll is a locale abbreviation such as `en' or `pt_BR'.
這些目錄用於安裝特定格式的文檔(並不要求支持所有這些格式的文檔)。預設值應該設置為:$(docdir)(使用「Autoconf」工具時,應該為「@htmldir @」等)。
`libdir'
The directory for object files and libraries of object code. Do not install executables here, they probably ought to go in $(libexecdir) instead. The value of libdir should normally be /usr/local/lib, but write it as $(exec_prefix)/lib. (If you are using Autoconf, write it as `@libdir@'.)
`lispdir'
The directory for installing any Emacs Lisp files in this package. By default, it should be /usr/local/share/emacs/site-lisp, but it should be written as $(datarootdir)/emacs/site-lisp.
If you are using Autoconf, write the default as `@lispdir@'. In order to make `@lispdir@' work, you need the following lines in your configure.in file:
lispdir='${datarootdir}/emacs/site-lisp'
AC_SUBST(lispdir)
`localedir'
The directory for installing locale-specific message catalogs for this package. By default, it should be /usr/local/share/locale, but it should be written as $(datarootdir)/locale. (If you are using Autoconf, write it as `@localedir@'.) This directory usually has a subdirectory per locale.
這個目錄安裝該包用於本地特定消息的目錄。預設值是:/usr/local/share/locale, 但是應該寫成:`@localedir@'。這個目錄常常對每個locale(本地化)都有一個子目錄。
2. 如何讓go編譯的程序後台運行
請自行查看我前面寫得GO語言開發環境和GO語言IDE編輯器的經驗文章
我們先寫一段GO代碼
很簡單就是列印輸出一個hello world!
保存為print.go文件
然後再CMD下一路cd到print.go目錄下來
在cmd下運行 go run print.go就可以運行go程序了
看看運行結果
GO程序的代碼是可以直接編譯成exe文件的
在print.go目錄下運行 go build print.go即可把go程序編譯成exe文件
完成之後看看exe文件是否存在
最好我們要看看運行exe的效果
3. go 手機瀏覽器,緩存位置在哪
找到安裝目錄\private\2002E0AB,裡面有個cache文件夾
4. 如何設置golang 系統gopath
計算機-屬性-高級系統設置,在高級選項卡選擇環境變數,然後在下邊的path中加上」;C:\MinGW\bin 「,注意是引號裡面的,包括分號。C:\MinGW\bin 是要添加的路徑。
5. 使用了島風go以後腳本無法更改
那就不能用,更改不了的
找到一個叫做cache的文件夾,這個裡面就是島風go的緩存目錄了,也就是你的艦娘立繪讀取的地方。
裡面有兩個文件夾,一個叫kcs一個叫kcs2,kcs裡面是艦娘的立繪位置代碼,kcs2裡面的就是圖片緩存。
找到上一步這些內容後打開你的緩存包並且解壓,一般來說解壓後裡面會是艦娘的id文件夾[以方便區分],裡面還會有一個文件夾一般就是cacha文件夾或者kcs/kcs2文件。
如果是cacha文件,就直接在cacha根目錄粘貼,如果是kcs和kcs2文件夾,就要打開cacha文件夾後進行粘貼。
6. 請教一下,goagent的DNS功能的緩存文件在哪裡
在配置文件的[dns]中開啟,然後將電腦的DNS地址設置為127.0.0.1就可以用了。這個功能應該主要是避免DNS污染的。試用了兩天,感覺還不太好用。
7. linux下怎麼安裝Go開發環境
一、Go安裝使用
1、下載Go源碼包
https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
上傳到/usr/local/src目錄下
2、編譯安裝Go到/usr/local
tar zxvf go1.6.3.linux-amd64.tar.gz -C /usr/local/
#註:必須使用root賬戶或者使用sudo來解壓縮Go源碼包
3、設置PATH環境變數,添加/usr/local/go/bin到環境變數
export PATH=$PATH:/usr/local/go/bin
4、安裝到自定義位置
Go二進制文件默認安裝到/usr/local/go,但是可以安裝Go工具到不同的位置,可以自行定義,只需要設置正確的環境變數。
例如,安裝Go到家目錄下,必須添加環境變數到$HOME/.profile
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
註:安裝Go到其他目錄時,GOROOT必須設置為環境變數
5、檢查是否正確安裝程序
通過設置一個工作區和建立一個簡單的程序,檢查是否正確安裝了一個簡單的程序。創建一個目錄包含您的工作空間,例如/data/work,並設置GOPATH環境變數指向的位置。
export GOPATH=/data/work
#如果不存在/data/work,需要新建
然後,在你的工作內創建src/github.com/user/hello,如果使用github,可以使用自己的用戶名代替user,在hello目錄下,新建hello.go
# cat hello.go
package main
import "fmt"
func main {
fmt.Printf("hello,world!\n")
}
#使用go編譯hello.go
go install github.com/user/hello
#上面的命令講名叫hello(or hello.exe)的程序放到你的工作區內,執行下面命令,會得到輸出結果。
$GOPATH/bin/hello
hello,world!
#當出現hello,world!表明Go已經安裝成功可以工作。
二、Go工作區介紹
1、機構組織代碼概述
Go語言程序通常將所有的代碼保存在一個工作區中。
工作區包含許多版本控制庫(由Git管理)。
每個存儲庫包含一個或多個包。
每個包由一個或多個在一個目錄中的源文件組成。
一個包的目錄的路徑決定其導入路徑。
註:同於其他的編程環境中,每一個項目都有一個獨立的工作區且工作區是緊密聯系在一起的版本控制庫。
2、工作區介紹
工作區是一個目錄層次結構,它的根目錄有三個目錄:
src 包含Go源文件
pkg 包含對象和包
bin 包含可執行命令
Go工具創建源碼包並安裝二進制文件到pkg和bin目錄下
src目錄通常包含多個版本控制庫(如Git或Mercurial),跟蹤一個或多個源包的開發。
下面展示一個好的工作區的例子:
bin/
hello # command executable
outyet # command executable
pkg/
linux_amd64/
github.com/golang/example/
stringutil.a # package object
src/
github.com/golang/example/
.git/ # Git repository metadata
hello/
hello.go # command source
outyet/
main.go # command source
main_test.go # test source
stringutil/
reverse.go # package source
reverse_test.go # test source
golang.org/x/image/
.git/ # Git repository metadata
bmp/
reader.go # package source
writer.go # package source
... (many more repositories and packages omitted) ...
上面的屬性圖展示了一個包含兩個存儲庫(example和image)的工作區,example 存儲庫包含兩個命令(hello,outyet),image庫包含bmp包和幾個其他的包。
一個典型的工作區包含包含許多軟體包和命令的多個源庫。大多數程序員將所有的源代碼和依賴關系保存在一個工作區中
3、GOPATH環境變數設置
GOPATH環境變數指定工作區的位置。它很可能是唯一的環境變數,代碼開發時需要設置。
開始,創建一個工作區目錄並設置相應的gopath。您的工作區可以位於任何你喜歡的地方,但我們將在這個文檔中使用/data/work。請注意,這不能是您的「Go安裝」路徑相同。
mkdir -p /data/work
export GOPATH=/data/work
為了方便。添加工作區的bin到PATH中
export PATH=$PATH:$GOPATH/bin
4、導入路徑
一個導入路徑是唯一標識一個包的字元串。一個包的導入路徑對應於它在工作區內或遠程存儲庫中的位置。
從標准庫的軟體包中給出了短的導入路徑等。對於您自己的包,您必須選擇不可能和未來添加到標准庫或其他外部庫的基礎路徑沖突的路徑。
注意,你不需要將你的代碼發布到一個遠程存儲庫之前,你可以建立它。這只是一個很好的習慣來組織你的代碼,如果你有一天會出版它。在實踐中,你可以選擇任何任意的路徑名稱,只要它是唯一的標准庫和更大的去生態系統。
我們將使用github.com/user作為我們的基本路徑。在您的工作區中創建一個目錄,以保持源代碼:
mkdir -p $GOPATH/src/github.com/user
5、第一個項目
編譯並運行一個簡單的程序,首先選擇一個包的路徑(我們將使用github.com/user/hello)和創建在您的工作區相應的軟體包目錄:
mkdir $GOPATH/src/github.com/user/hello
創建名叫hello.go的文件,上面創建過,此處略過。
cd $GOPATH/src/github.com/user/hello
go install
$GOPATH/bin/hello
或者:
hello
如果你使用的是一個源代碼管理系統,現在是一個很好的時間來初始化一個存儲庫,添加文件,並提交你的第一次更改。再次,這一步是可選的:您不需要使用源代碼管理來寫代碼。
cd $GOPATH/src/github.com/user/hello
git init
Initialized empty Git repository in /data/work/src/github.com/user/hello/.git/
git add hello.go
git commit -m "first commit"
[master (root-commit) bbfb477] first commit
6、first library
mkdir $GOPATH/src/github.com/user/stringutil
下一步,在目錄下創建一個名為reverse.go文件中有下列內容:
// Package stringutil contains utility functions for working with strings.
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
使用go build測試包的編譯
$ go build github.com/user/stringutil
如果當前位置源碼包目錄,只需要:
go build
上面操作並不會產生一個輸出文件,必須使用go install,把包和對象輸出到工作去的pkg目錄內
確認stringutil包創建完成後,修改原始hello.go,使用stringutil包:
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("\n !oG ,olleH"))
}
無論使用go安裝包還是二進制文件,所有相關的依賴都會自動安裝。所以當你安裝hello程序時:
$ go install github.com/user/hello
對應的stringutil包會自動安裝好。
執行新的hello程序,可以看到消息已經被反轉
# hello
Hello, Go!
完成上面操作之後,工作區應該為:
├── bin
│ └── hello # command executable
├── pkg
│ └── linux_amd64 # this will reflect your OS and architecture
│ └── github.com
│ └── user
│ └── stringutil.a # package object
└── src
└── github.com
└── user
├── hello
│ └── hello.go # command source
└── stringutil
└── reverse.go # package source
注意:go install會把庫文件stringutil.a放到pkg/linux_amd64下邊(目錄結構跟源代碼結構一樣)。這樣可以go命令可以直接找到對應的包對象,避免不必要的重復編譯。linux_amd64是為了根據操作系統和你的系統架構交叉編譯。
所有Go可執行程序都通過靜態方式鏈接在一起,所以在運行時是不需要相關的包對象(庫)。
7、包命令
所有的Go源代碼都以下面的語句開始:
package name
其中name就是包引用默認的名稱,一個包中的所有文件必須使用同一個包名,可執行命令必須是main。
一個二進制文件下所有的包名不需要唯一,但是引用路徑必須唯一
8、測試
Go自帶了一個輕量級的測試框架,由go test和testing包組成。
可以通過新建xx_test.go寫一個測試,其中包含若干個TestXXX函數。測試框架會自動執行這些函數;如果函數中包含tError或t.Fail, 對應的測試會被判為失敗。
添加一個針對stringutil的測試文件$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下內容:
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
#通過go test測試
# go test github.com/user/stringutil
ok github.com/user/stringutil 0.002s
#同樣的,在包文件夾下可以忽略路徑而直接執行go test
[root@zabbix stringutil]# go test
PASS
ok github.com/user/stringutil 0.002s
9、遠程包
包的引用路徑用來描述如何通過版本控制系統獲取包的源代碼。go工具通過引用路徑自動從遠程代碼倉庫獲取包文件。比如本文中用的例子也對應的保存在github.com/golang/example下。go可以通過包的代碼倉庫的url直接獲取、生成、安裝對應的包。
[root@zabbix ~]# go get github.com/golang/example/hello
[root@zabbix ~]# $GOPATH/bin/hello
Hello, Go examples!
如果工作區中不存在對應的包,go會將對應的包放到GOPATH環境變數指明的工作區下。(如果包已經存在,go跳過代碼拉去而直接執行go install)
建議詳細看一下http://www.linuxprobe.com/set-go-env.html這個,有圖文
8. 如何配置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。下載地址:http://code.google.com/p/gomingw/downloads/list。如果下的是壓縮包,請把它解壓到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的插件,下載地址:http://code.google.com/p/goclipse/
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語言的教程(http://tour.golang.org/#2),很不錯。支持在web上直接運行大部分的go程序,想了解這個教程的源代碼的朋友可以通過以下方式獲取。如果沒興趣,可以跳過這個步驟。
1、下載安裝Mercurial軟體。
2、在命令行下輸入:
hg clone http://[email protected]/r/qinhui99-go-tour/
http://[email protected]/r/qinhui99-go-tour/這個URL是我從google的go-tour源代碼的一個clone。作為測試用的。如果把http改成https協議,下載就會失敗。搞不懂。
編譯帶調用C代碼的go文件(可選)
1、為了在windows下編譯帶C代碼的go程序,你首先需要下載並安裝MinGW或者Cygwin。
2、首選安裝MinGW。在安裝MinGW之後,記得要把MinGW安裝目錄\bin路徑設置在path環境變數裡面,以便能在dos窗口下直接調用gcc。
3、下載一個gowin-env。下載地址:gowin-env。下載後解壓到某個目錄下,例如:C:\gowin-env. 然後,編輯go-env.bat。配置相關的go參數。例如,我的配置是:
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
設置好go-env.bat後,就可以點擊Console.bat來啟動編譯和運行窗口。
4、編寫一個帶C代碼的go程序。例如,testc.go
5、編譯
例如:
go build -compiler gccgo test_c.go
運行調用C代碼的go文件(可選)
1、testc.go.
創建rand目錄,然後在rand裡面創建testc.go. 代碼如下:
package rand
/*
//
#include <stdio.h>
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下創建a.go.代碼如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一級創建test_import.go。代碼如下:
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4、運行test_import.go
go run test_import.go
在測試其它幾個C代碼的時候,發現windows版本的cgo還有些編譯問題,同樣的代碼轉移到蘋果的XCODE下就沒有問題。後來終於發現原因了,原來有些例子是unix平台下的,而在windows平台下,方法名和參數需要做調整。
例如:下面代碼在windows下編譯報一堆錯誤。
package rand
/*
#include <stdlib.h>
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
這里需要把return int(C.random()) 修改為「return int(C.rand())」
C.srandom(C.uint(i))修改為「C.srand(C.uint(i))」編譯就OK了。
9. Go語言中如何設置包的查找路徑
二進制包安裝的話:如果安裝在了默認位置例如/usr/local/go (Windows系統:c:\Go)這個時候可以不需要設置GOROOT,如果改變了安裝的這個默認目錄,那麼就需要設置GOROOTGOROOT的概念有點Go安裝目錄的意思GOPATH是一個開發環境目錄的意思,下面必須包含bin、pkg、src,然後再src下面新建項目就可以了你在沒有設置GOPATH的情況下,也可以把項目建在GOROOT/src下面,其實和GOPATH的概念類似
10. 關於島風go的緩存包該放在哪裡可以被島風go讀取
是啊本地緩存的話 從0開始一點點慢慢到100 的 就是這個文件如圖,就是時間有點長,緩存超慢的
,我也有一次到了99.0然後不動了 我真急死了 然後 我網路了下怎麼弄 後來發現重新緩存一遍就好看了,第二次緩存成功,如果本地的緩存不行的話 你可以試試在線的 祝提督武運昌隆!還有不斷可以繼續提問 再補充下 這個緩存他是自己放置的 不要人工去動它 以免島風go發生故障