GO標準ライブラリには、Goのインストールの下にソースファイルがあります。
C:\Go\src\pkg
ソースフォルダの下のパッケージは、次の.aファイルに対応しています。
C:\Go\pkg\windows_amd64
.aファイルとは何ですか?それらは何のために使用され、どのように生成されますか。私がそうするとき、それらが自動的に生成されることに気づきましたgo get libraryhostedingithub
。
GO標準ライブラリには、Goのインストールの下にソースファイルがあります。
C:\Go\src\pkg
ソースフォルダの下のパッケージは、次の.aファイルに対応しています。
C:\Go\pkg\windows_amd64
.aファイルとは何ですか?それらは何のために使用され、どのように生成されますか。私がそうするとき、それらが自動的に生成されることに気づきましたgo get libraryhostedingithub
。
それらはコンパイルされたパッケージです。を書くときに参照しているのはこれらのファイルですimport foo/bar
。を参照し$GOROOT/pkg/$GOOS_$GOARCH/foo/bar.a
、ではありません$GOROOT/src/foo/bar/*.go
。
これらのファイルには、コンパイルされたパッケージのバイナリコードと、デバッグシンボルおよびソース情報が含まれています。
Go.a
パッケージオブジェクトアーカイブファイルは、コマンドpackによって作成さgo tool pack
れます。
ドキュメントによると:
DIRがGoパスにリストされているディレクトリである場合、ソースがDIR / src / foo/barにあるパッケージを「foo/bar」としてインポートし、コンパイルされたフォームを「DIR / pkg / GOOS_GOARCH / foo/bar」にインストールできます。 a "(または、gccgoの場合は" DIR / pkg / gccgo / foo / libbar.a ")。
つまり、コンパイル/インストールされたパッケージのようです。
@peterSOが言ったように、「Go.a
パッケージオブジェクトアーカイブファイルは、コマンドpackによって作成されgo tool pack
ます。」
ただし、さらに明確にするために、これらのファイルをコピーして拡張子の名前を変更し、またはのコマンド.tar.gz
などのプログラムで通常の圧縮tarイメージとして開くか、実質的に同じものを使用できます。7zip
tar -xvf
Linux
go tool pack
内部には、アーキテクチャのコンパイル済みコードとデバッグシンボルを含むコンパイル済みオブジェクトファイル「.o」と、パッケージメタデータを含むパッケージ定義ファイル(__。PKGDEF)が表示されます。