Подтвердить что ты не робот

Что такое файлы .a в Go?

В стандартной библиотеке GO есть исходные файлы под моей установкой Go:

C:\Go\src\pkg

Пакеты в исходной папке соответствуют файлам .a здесь:

C:\Go\pkg\windows_amd64

Какие файлы .a? Для чего они используются и как они создаются. Я заметил, что они генерируются автоматически, когда я делаю go get libraryhostedingithub.

4b9b3361

Ответ 1

Они являются скомпилированными пакетами. Именно эти файлы вы указываете при написании import foo/bar. Это означает $GOROOT/pkg/$GOOS_$GOARCH/foo/bar.a, а не $GOROOT/src/foo/bar/*.go.

Эти файлы содержат двоичный код скомпилированного пакета, а также символы отладки и информацию об источнике.

Ответ 2

В соответствии с docs:

Если DIR является каталогом, указанным в пути Go, пакет с источником в DIR/src/foo/bar может быть импортирован как "foo/bar" и имеет скомпилированную форму, установленную в "DIR/pkg/GOOS_GOARCH/foo/bar.a" (или для gccgo, "DIR/pkg/gccgo/foo/libbar.a" ).

Итак, это просто компилируемый/установленный пакет.

Ответ 3

Go .a файлы архива объектов пакета создаются командой go tool pack: Командный пакет.

Ответ 4

Как сказал @peterSO, "Go .a файлы архива объектов пакета создаются командой go tool pack: Командный пакет.".

Однако, чтобы быть еще более понятным, вы можете скопировать эти файлы и переименовать расширение в .tar.gz и открыть их как обычное сжатое tar-изображение в программе типа 7zip или tar -xvf в Linux, или вы можете использовать go tool pack, который фактически тот же.

Внутри вы увидите скомпилированные объектные файлы ".o", который содержит символы скомпилированного кода и отладки архитектуры, а также файл определения пакета (__. PKGDEF), который содержит метаданные пакета.