ホームページ > バックエンド開発 > Golang > Go言語でbuildコマンドを使用する方法

Go言語でbuildコマンドを使用する方法

青灯夜游
リリース: 2023-01-17 13:52:12
オリジナル
3599 人が閲覧しました

Go 言語では、「go build」コマンドは主にコードのコンパイルに使用されます。Go 言語のプログラム コードはバイナリ実行可能ファイルにコンパイルできますが、バイナリ ファイルは手動で実行する必要があります。 go build には、パラメータなしのコンパイル、ファイルリストのコンパイル、パッケージを指定したコンパイルなど、さまざまなコンパイル方法があり、これらの方法を使用して実行ファイルを出力できます。

Go言語でbuildコマンドを使用する方法

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Go 言語はコンパイルされた静的言語 (C 言語と同じ) であるため、Go 言語プログラムを実行する前に、バイナリ実行可能ファイルにコンパイルする必要があります。

Go 言語プログラムは、Go 言語が提供する go build または go run コマンドを使用してコンパイルできます。

  • go build コマンドは Go 言語プログラム コードをバイナリ実行可能ファイルにコンパイルできますが、バイナリ ファイルを手動で実行する必要があります。

  • go run コマンドの方が便利です。コンパイル直後に Go 言語プログラムを実行します。コンパイル プロセス中に一時ファイルが生成されますが、実行可能ファイルは生成されません。この機能はプログラムのデバッグに非常に適しています。

go build コマンド (go 言語のコンパイル コマンド)

Go 言語で使用される go build コマンドが主に使用されますコンパイルコード用。パッケージのコンパイル プロセス中に、必要に応じて、それに関連付けられたパッケージが同時にコンパイルされます。

go build にはパラメータなしのコンパイル、ファイルリストのコンパイル、指定したパッケージのコンパイルなど、多くのコンパイル方法があります。これらの方法を使用して実行可能ファイルを出力できます。

go build パラメータなしのコンパイル

このセクションで必要なコードの具体的な場所は、./src/chapter11/gobuild です。

GOPATH に対するコードのディレクトリ関係は次のとおりです:

.
└── src
    └── chapter11
        └── gobuild
            ├── lib.go
            └── main.go
ログイン後にコピー

main.go コードは次のとおりです:

package main

import (
    "fmt"
)

func main() {
    // 同包的函数
    pkgFunc()
    fmt.Println("hello world")
}
ログイン後にコピー

lib.go コードは次のとおりです:

package main

import "fmt"

func pkgFunc() {
    fmt.Println("call pkgFunc")
}
ログイン後にコピー

ソース コードに GOPATH に依存するパッケージ参照がない場合、これらのソース コードはパラメーターなしの go build を使用できます。形式は次のとおりです。

go build
ログイン後にコピー

次に示すように、コードが配置されているディレクトリ (./src/chapter11/gobuild) で go build コマンドを使用します。

コマンド ラインの指示と出力の説明は次のとおりです。

  • 行 1、この例のソース コード ディレクトリに移動します。

  • 2 行目の go build は、コンパイル開始時に現在のディレクトリの go ソース コードを検索します。この例では、 go build は lib.go と main.go という 2 つのファイルを見つけます。これら 2 つのファイルをコンパイルすると、現在のディレクトリ名の実行可能ファイルが生成され、現在のディレクトリに配置されます (ここでの実行可能ファイルは go build)。

  • 行 3 と行 4 には、現在のディレクトリ内のファイルがリストされており、コンパイルは成功し、go build 実行ファイルが出力されます。

  • 行 5、現在のディレクトリで実行可能ファイル go build を実行します。

  • 6行目と7行目、go build実行後の出力内容です。

go build ファイル リスト

同じディレクトリ内の複数のソース コード ファイルをコンパイルする場合、go build 後に複数のファイル名を指定できます。 build はこれらのソース コードをコンパイルし、実行可能ファイルを出力します。「go build ファイル リスト」の形式は次のとおりです:

$ cd src/chapter11/gobuild/
$ go build
$ ls
gobuild  lib.go  main.go
$ ./gobuild
call pkgFunc
hello world
ログイン後にコピー

コードが配置されているディレクトリ (./src/chapter11/gobuild) で go build を使用します。 ), in go ビルド後にコンパイルするソース コード ファイル名を追加します。コードは次のとおりです:

go build file1.go file2.go……
ログイン後にコピー

コマンド ラインの手順と出力手順は次のとおりです:

  • 行 1 は go build の後にファイル リストを追加し、コンパイルする必要がある Go ソース コードを選択します。

  • 行 2 と行 3 には、コンパイル後の現在のディレクトリ内のファイルがリストされています。今回は実行ファイル名がmainになります。

  • 行 4 から 6 はメイン ファイルを実行し、期待される出力を取得します。

  • 7 行目では、lib.go がリストの先頭に来るようにファイル リストの順序を調整してみます。

  • 8 行目と 9 行目で、lib 実行可能ファイルがコンパイル結果に表示されます。

ヒント:

go build file list」メソッドを使用してコンパイルする場合、実行可能ファイルはファイル内の最初のソース コード ファイルを選択します。デフォルトでは list を実行可能ファイル名として出力します。

出力実行可能ファイル名を指定する必要がある場合は、

-o パラメーターを使用できます。以下の例を参照してください。

$ go build main.go lib.go
$ ls
lib.go  main  main.go
$ ./main
call pkgFunc
hello world
$ go build lib.go main.go
$ ls
lib  lib.go  main  main.go
ログイン後にコピー

上記のコードでは、 go と go の間にあります。ビルドとファイル リスト

-o myexec パラメータが挿入され、指定された出力ファイル名が myexec であることを示します。

注:

「go build ファイル リスト」コンパイル方法を使用してコンパイルする場合、ファイル リスト内の各ファイルは、同じパッケージの Go ソース コードである必要があります。つまり、すべてのプロジェクトの Go ソースコードを C のようなファイルリスト方式でコンパイルすることはできません。複雑なプロジェクトをコンパイルする場合は、「指定したパッケージのコンパイル」方法を使用する必要があります。

go build file list」メソッドは、ファイル数が少ない Go 言語で書かれたツールに適しています。

go build package

GOPATH を設定した後、パッケージ内のファイルが追加された場合でも、「go build package」はパッケージ名に基づいて直接コンパイルできます (追加)または削除(例外)は、コンパイル ディレクティブには影響しません。

1) コードの場所とソース コード

本小节需要用到的代码具体位置是./src/chapter11/goinstall。

本套教程所有源码下载地址:https://pan.baidu.com/s/1ORFVTOLEYYqDhRzeq0zIiQ 提取密码:hfyf

相对于GOPATH的目录关系如下:

.
└── src
    └── chapter11
        └──goinstall
            ├── main.go
            └── mypkg
                └── mypkg.go
ログイン後にコピー

main.go代码如下:

package main

import (
    "chapter11/goinstall/mypkg"
    "fmt"
)

func main() {
    mypkg.CustomPkgFunc()
    fmt.Println("hello world")
}
ログイン後にコピー

mypkg.go代码如下:

package mypkg

import "fmt"

func CustomPkgFunc() {
    fmt.Println("call CustomPkgFunc")
}
ログイン後にコピー

2) 按包编译命令

执行以下命令将按包方式编译 goinstall 代码:

$ export GOPATH=/home/davy/golangbook/code
$ go build -o main chapter11/goinstall
$ ./goinstall
call CustomPkgFunc
hello world
ログイン後にコピー

代码说明如下:

  • 第 1 行,设置环境变量 GOPATH,这里的路径是笔者的目录,可以根据实际目录来设置 GOPATH。

  • 第 2 行,-o执行指定输出文件为 main,后面接要编译的包名。包名是相对于 GOPATH 下的 src 目录开始的。

  • 第 3~5 行,编译成功,执行 main 后获得期望的输出。

go build 编译时的附加参数

go build 还有一些附加参数,可以显示更多的编译信息和更多的操作,详见下表所示。

go build编译时的附加参数
附加参数 备  注
-v 编译时显示包名
-p n 开启并发编译,默认情况下该值为 CPU 逻辑核数
-a 强制重新构建
-n 打印编译时会用到的所有命令,但不真正执行
-x 打印编译时会用到的所有命令
-race 开启竞态检测

表中的附加参数按使用频率排列,读者可以根据需要选择使用。

【相关推荐:Go视频教程编程教学

以上がGo言語でbuildコマンドを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート