Go 應用程式構建淺析

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。要理解並靈活運用一個語言,我覺得有必要瞭解其構建應用程式的內部機制。經過這段時間對GO的接觸,個人對GO構建程式的方式挺滿意:簡單、直接、靈活。下面就對GO語言構建應用程式的方法進行一個淺顯的分析。
       構建一個GO項目,我們只需設定好工程工作目錄,並在該目錄下建立名為src的檔案夾,然後將你的源檔案放到src下就行了。為便於理解,這裡給出一個簡單項目的例子進行具體說明。
環境變數:GOPATH =path/to/GoPro:$GOPATH
GoPro/            bin/                   hello            pkg/                   linux_amd64/                           example/                                    mymath.a            src/                   example/                           mymath/                                    sqrt.go    //package mymath                           hello/                                    test.go     //package main,其中用到了mymath包
操作命令:    go run: 在當前檔案夾下運行應用程式,需指明路徑    go build: 在當前檔案夾下構建應用程式,如不指明路徑則預設build當前檔案下go檔案    go install: 在pkg下產生相應的包,如果是main包,則在bin下產生相應的可執行檔,如果沒有指明目錄則預設install目前的目錄下的包。
    e.g.        在 src/example/hello/目錄下運行            go run test.go      //直接運行            go build test.go      //產生可執行檔 test        在任意目錄下運行:            go install example/mymath  //在pkg裡產生相應CPU架構的包, e.g.   pkg/linux_amd64/example/mymath.a            go install example/hello  //在bin裡產生可執行檔,e.g.   bin/hello
       GO 正式版裡對編譯、連結這些操作進行了簡化,直接用 go+ cmd 形式的指令就行。但是,瞭解Go的編譯、連結過程能更好的理解GO是如何來構建應用的。GO 對各個CPU架構有不同的編譯器、連結器(這裡指的是go內建的編譯器,當然也可以用gccgo進行編譯連結,這不詳述了),e.g. X86_64架構的編譯命令是 6g,連結是6l。現在我們回過頭來看 go install 這個命令,通過運行 go install -n example/mymath,我們看到其實裡面就是調用了 6g,然後用 pack命令把編譯出來的目標檔案打包到 mymath.a;再運行一下  go install -n example/hello,我們看到依次調用了 6gpack6l命令,即 6g編譯出 _go_.6檔案,再 packhello.a包,最後連結成 hello。另外, go install/build/run 等命令內建有類似 Makefile 的依賴更新檢查機制,如果源檔案沒有更改,不會再重新編譯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.