通常のプロセスではldflags、Go 1.18 (2021 年第 4 四半期/2022 年第 1 四半期) 以降、.
問題 37475およびCL 356013を参照してください
このgoコマンドは、現在チェックアウトされているリビジョンや、編集済みまたは追跡されていないファイルが存在するかどうかを示すフラグなど、バージョン管理情報をバイナリに埋め込むようになりました。
goコマンドが Git または Mercurial リポジトリ内のディレクトリで呼び出され、mainパッケージとそれに含まmainれるモジュールが同じリポジトリにある場合、バージョン管理情報が埋め込まれます。
この情報は、フラグを使用して省略できます-buildvcs=false。
さらに、このgoコマンドは以下に関する情報を埋め込みます。
- ビルドタグとツールタグを含むビルド ( で設定
-tags)、
- コンパイラ、
- アセンブラ、および
- リンカー フラグ ( など
-gcflags)、
- 有効になっているかどうか
cgo、有効である場合はcgo環境変数の値 ( などCGO_CFLAGS)。
この情報は、フラグを使用して省略できます-buildinfo=false。
以下を使用して、VCS とビルド情報の両方をモジュール情報と一緒に読み取ることができます。
CL 373875追加
- 構造体には
BuildInfo、バイナリがどのように構築されたかに関する追加情報を含む新しいフィールドがあります。
- 新しい
GoVersionフィールドには、バイナリのビルドに使用された Go のバージョンが保持されます。
- 新しいフィールドは、ビルドを説明するキーと値のペアを保持する構造体
Settingsのスライスです。BuildSettings