使用Go编译为可执行文件(windows/linux)
案例場景:創(chuàng)建一個兩層目錄,并在該目錄下創(chuàng)建一個文件,將“Hello World”字符寫入該文件,并讀取出來。
目標:(1)測試案例是否能執(zhí)行成功;(2)編譯代碼成windows與linux兩種環(huán)境下的可執(zhí)行文件。
測試代碼文件名為main.go,內容如下:
package mainimport ("fmt""io/ioutil""os" )func main() {// 文件夾名_dir := "data/test"exist, err := pathExists(_dir)if err != nil {fmt.Printf("get dir error![%v]\n", err)return}if exist {fmt.Printf("has dir![%v]\n", _dir)} else {fmt.Printf("no dir![%v]\n", _dir)// 創(chuàng)建文件夾//err := os.Mkdir(_dir, os.ModePerm)err := os.MkdirAll(_dir, 0666)if err != nil {fmt.Printf("mkdir failed![%v]\n", err)} else {fmt.Printf("mkdir success!\n")fileName := _dir + "/test.txt"// 創(chuàng)建文件os.Create(fileName)// 打開文件file, _ := os.OpenFile(fileName, os.O_WRONLY|os.O_APPEND, 0666)// 當執(zhí)行完,關閉文件defer file.Close()// 寫內容到文件中file.WriteString("Hello World!")//讀取文件data, _ := ioutil.ReadFile(fileName)// 打印內容fmt.Println(string(data))}} }func pathExists(path string) (bool, error) {_, err := os.Stat(path)if err == nil {return true, nil}if os.IsNotExist(err) {return false, nil}return false, err }經過調試,上述代碼可正常執(zhí)行。測試通過。
編譯成windows環(huán)境exe可執(zhí)行文件過程,打開文件所在目錄,在資源路徑框中輸入cmd,打開cmd命令框,通過“go env”查看當期環(huán)境變量,以windows10環(huán)境為例,默認為windows環(huán)境。
// 配置環(huán)境變量 SET CGO_ENABLED=1 SET GOOS=windows SET GOARCH=amd64 // 編譯命令 go build main.go編譯出來后就是一個可執(zhí)行文件main.exe,可用鼠標雙擊直接執(zhí)行,傳到其他電腦上操作,依然可執(zhí)行,不依賴第三方包(不像Java會依賴JDK)。
執(zhí)行后,在main.exe所在目錄下,生成一個data/test/test.txt,并且打開test.txt文件可看到Hello World。
編譯成Linux環(huán)境可執(zhí)行文件,此處除編譯環(huán)境參數(shù)外,其他步驟與上面類似,編譯參數(shù)如下
// 配置參數(shù) SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 // 編譯命令 go build main.go編譯輸出的可執(zhí)行文件名為main,上傳至centos7.x系統(tǒng),使用 “chmod +x main”添加可執(zhí)行權限,執(zhí)行 "?./main? ",輸出結果與上述windows結果一樣。
備注:上述編譯環(huán)境所在的操作系統(tǒng)均為Windows10,即在windows10上開發(fā)代碼,編譯輸出windows與linux兩種環(huán)境的可執(zhí)行文件。
總結
以上是生活随笔為你收集整理的使用Go编译为可执行文件(windows/linux)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft Office Vis
- 下一篇: golang Windows下编译lin