Время сборки медленное с cgo зависимостями - PullRequest
5 голосов
/ 05 августа 2020

У меня есть программа Go, которая использует библиотеку оболочки Qt https://github.com/therecipe/qt. К сожалению, время сборки становится чрезвычайно большим (при условии, что это часть go)

go build -i .  // takes about 14 seconds
go run .       // takes about 8 seconds

После выполнения любой из приведенных выше команд я получаю предварительно скомпилированные зависимости в моем $GOPATH/pkg/linux_amd64/github.com/therecipe/qt как .a файлы, чтобы они не перестраивались каждый раз.

Я пытался использовать ccache и Gold linker /usr/bin/ld.gold, как описано в https://github.com/therecipe/qt/wiki/Faster-builds- (Linux) , но это ничего не улучшил. Также эта оболочка Qt поставляется с собственным инструментом сборки qtdeploy, который я пробовал, но это примерно такое же время сборки.

Система, в которой я работаю:

go version go1.14.4 linux/amd64
Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
16GB Ram

Кто-нибудь знает можно ли хотя бы немного уменьшить время сборки?

EDIT:

Выполнение go build -x . показывает, что самым большим потребителем времени является следующая команда

~/.go/pkg/tool/linux_amd64/link -o $WORK/b001/exe/a.out -importcfg $WORK/b001/importcfg.link -buildmode=exe -buildid=k8lYa6JYqRdCY9Gyt0jX/16myMybByG5X6rOfaRpS/WHdW2kCTfMCZs2I4x9WE/k8lYa6JYqRdCY9Gyt0jX -extld=g++ ~/.cache/go-build/b5/b5e47b7f77c2df06ba69937dc8b1399b1289b7c90d2e08b3341fdf13e119c860-d
...