go 当链接大型静态库时,出现"HEADR太小"错误,

ljsrvy3e  于 4个月前  发布在  Go
关注(0)|答案(2)|浏览(56)

你正在使用的Go版本是什么( go version )?

$ go version
1.17-rc1

(尽管它也适用于至少1.16.5,可能追溯到更早的版本)

这个问题在最新版本中是否重现?

是的

你正在使用什么操作系统和处理器架构( go env )?

go env 输出

$ go env
GO111MODULE=""
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/bendik/Library/Caches/go-build"
GOENV="/Users/bendik/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/bendik/go/pkg/mod"
GONOPROXY="git.noisolation.com"
GONOSUMDB="git.noisolation.com"
GOOS="darwin"
GOPATH="/Users/bendik/go"
GOPRIVATE="git.noisolation.com"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.17rc1"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rq/k2szrdln2t72syt8tzhzrds80000gn/T/go-build1228245628=/tmp/go-build -gno-record-gcc-switches -fno-common"

你做了什么?

我尝试将一个Go程序链接到一个静态WebRTC库(32MB,没有调试符号)。这与使用大型 net/http 包相结合,使Go打印出这个错误: /usr/local/go/pkg/tool/darwin_amd64/link: HEADR too small: 4408 > 4096

你期望看到什么?

我期望Go能正确链接二进制文件。

你看到了什么?

如上所述的 HEADR too small 错误。

8mmmxcuj

8mmmxcuj1#

感谢mortie的报告。
为了解决这个问题,我们需要一种方法来重现它——你能请贴出详细的说明吗?例如,你执行的具体命令会触发这个问题。

相关问题