Go言語入門:アプリケーションのコンパイルとインストール

スポンサーリンク
Go言語入門:アプリケーションのコンパイルとインストール ノウハウ
Go言語入門:アプリケーションのコンパイルとインストール
この記事は約7分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、Golangにおけるアプリケーションのコンパイルとインストールについてご紹介します。

スポンサーリンク

前提条件

前回の記事では、テストコードの作成についてご紹介しました。

今回の記事では、アプリケーションをコンパイルしてインストールする方法についてご紹介します。go runコマンドは、頻繁に変更を加える場合にプログラムをコンパイルして実行するための便利なショートカットですが、バイナリ実行ファイルを生成するわけではありません。

この記事では、コードを構築するための2つの追加コマンド(go build、go install)を紹介します。

下記の記事が実行できる環境にあることを前提にしています。

利用方法

作業ディレクトリを作成して、移動する。

mkdir 11_learn-golang-compile-install
cd 11_learn-golang-compile-install

asdfコマンドで使用するGolangのバージョンを指定します。

すでにGolangが実行できる状態にある方は、このコマンドをスキップしても問題ありません。

asdf local golang 1.20.5

前回の記事のソースコードを作業ディレクトリにコピーします。

cp -r ../10_learn-golang-test/greetings .
cp -r ../10_learn-golang-test/hello . 

helloディレクトリのコマンドラインから、go buildコマンドを実行して、コードを実行ファイルにコンパイルします。

cd hello 
go build

helloディレクトリのコマンドラインから、新しいhello実行ファイルを実行し、コードが動作することを確認します。

./hello

下記のような結果になっていれば成功です。

% ./hello 
map[Darrin:Hail, Darrin! Well met! Gladys:Hail, Gladys! Well met! Samantha:Hi, Samantha. Welcome!]

アプリケーションを実行ファイルにコンパイルして、実行できるようにしました。しかし、現在実行するためには、プロンプトが実行ファイルのディレクトリにあるか、実行ファイルのパスを指定する必要があります。

次に、実行ファイルをインストールすることで、パスを指定せずに実行できるようにします。

goコマンドで現在のパッケージがインストールされるGoインストールパスを検出します。

次の例のように、go listコマンドを実行することで、インストールパスを発見することができます。

go list -f '{{.Target}}'

たとえば、コマンドの出力に /home/gopher/bin/hello と表示された場合、バイナリが /home/gopher/bin にインストールされたことを意味します。このインストール・ディレクトリは、次のステップで必要になります。

Goのインストールディレクトリをシステムのシェルパスに追加します。
そうすれば、実行ファイルがある場所を指定しなくても、プログラムの実行ファイルを実行することができるようになります。

LinuxやMacでは、次のコマンドを実行します。

export PATH=$PATH:/path/to/your/install/directory

シェルのパスを更新したら、go installコマンドを実行して、パッケージをコンパイルしてインストールします。

go install

アプリケーションの名前を入力するだけで、アプリケーションを実行することができます。新しいコマンドプロンプトを開いて、どこか別のディレクトリでhello実行ファイル名を実行してみてください。

helloディレクトリと同じ結果を得られれば成功です。

% cd ~/
% ./hello 
map[Darrin:Hail, Darrin! Well met! Gladys:Hail, Gladys! Well met! Samantha:Hi, Samantha. Welcome!]

補足

シェルのパスに$HOME/binのようなディレクトリが既にあり、そこにGoプログラムをインストールしたい場合は、go envコマンドでGOBIN変数を設定することで、インストール先を変更することもできます。

go env -w GOBIN=/path/to/your/bin

そのため、現在のシェルのパスを変更せずに、installすることができます。

解説

go build

go buildは、Goプログラムをビルドして実行可能なバイナリファイルを生成するためのコマンドです。Go言語では、ソースコードをコンパイルしてバイナリファイルを生成することでプログラムを実行します。

go buildコマンドは、以下のような形式で使用します。

go build [ビルドオプション] [パッケージ名]

ビルドオプションには、ビルドに関するさまざまな設定やフラグを指定することができます。一般的に使用されるオプションには以下のようなものがあります。

  • -o <ファイル名>: 生成されるバイナリファイルの名前を指定します。デフォルトでは、カレントディレクトリ内にパッケージ名と同じ名前のバイナリファイルが生成されます。
  • -v: ビルド時の詳細な出力を表示します。
  • -x: 実行中に実行されるコマンドを表示します。
  • -ldflags "<フラグ>": リンカに渡すフラグを指定します。

パッケージ名は、ビルドするGoプログラムのパッケージのパスを指定します。通常、プログラムのエントリポイントであるmainパッケージを指定します。

例えば、以下のようなコマンドを使用してビルドを実行します。

go build -o myprogram main.go

これにより、main.goというファイルからmyprogramという名前のバイナリファイルが生成されます。

なお、go buildコマンドは、ビルドと同時に依存関係の解決も行います。必要なパッケージや外部ライブラリが自動的にダウンロードされ、ビルドに含まれます。また、ビルドが成功すると、生成されたバイナリファイルを直接実行することもできます。

go install

go installは、Goプログラムをビルドして実行可能なバイナリファイルを生成し、それを指定されたディレクトリにインストールするためのコマンドです。go installを使用すると、ビルドされたバイナリファイルがGoのバイナリインストールディレクトリ(通常は$GOPATH/bin)に配置されます。

go installコマンドは、以下のような形式で使用します。

go install [インストールオプション] [パッケージ名]

インストールオプションには、インストール時の挙動や設定を指定することができます。主なオプションには以下があります。

  • -v: インストール時の詳細な出力を表示します。
  • -x: 実行中に実行されるコマンドを表示します。

パッケージ名は、インストールするGoプログラムのパッケージのパスを指定します。通常、プログラムのエントリポイントであるmainパッケージを指定します。

例えば、以下のようなコマンドを使用してインストールを実行します。

go install mypackage

これにより、mypackageというパッケージがビルドされ、生成されたバイナリファイルが$GOPATH/binディレクトリにインストールされます。

また、go installコマンドは、go buildと同様に依存関係の解決も行います。必要なパッケージや外部ライブラリが自動的にダウンロードされ、ビルドとインストールの対象となります。

一般的に、go buildは単純なバイナリファイルの生成に使用され、go installは実行可能なバイナリをインストールするために使用されます。インストールされたバイナリファイルは、後で直接実行したり、他のプロジェクトからインポートして使用することができます。

おわりに

この記事では、アプリケーションをコンパイルしてインストールする方法についてご紹介しました。

本記事で使用したコードは下記のリポジトリにあります。

よっしー
よっしー

何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました