Допустим, у меня есть пакет golang, содержащий некоторый ассемблерный код:
demopkg/
source1.go
source2.go
asm_amd64.s
Если я попытаюсь собрать его с помощью go build
, набор инструментов будет использовать go tool asm
для сборки файлов *.s.
Но если я добавлю в смесь Cgo, поставив один import "C"
в любой из исходников, go переключится на ассемблер gcc.
Я могу увидеть это, выполнив go build -n
. Вызовы /usr/local/go/pkg/tool/linux_amd64/asm
из первого случая заменяются вызовами gcc
. Кроме того, он начинает жаловаться на неправильный синтаксис.
Задокументировано ли это поведение, чтобы я мог полагаться на него при обслуживании моего пакета? Могу ли я заставить go build
использовать один точный ассемблер?