macos - golang 1.16 cgo/clang 在 darwin/arm64 上构建失败

标签 macos go clang llvm apple-m1

我正在尝试使用 cgo 构建一些 go 代码,但在 darwin/arm64 go1.16beta 上构建失败。

我的 go 环境是

GO111MODULE="off"
GOARCH="arm64"
GOBIN=""
GOCACHE="/Users/a/Library/Caches/go-build"
GOENV="/Users/a/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/a/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/a/go"
GOPRIVATE=""
GOPROXY="https://goproxy.io,direct"
GOROOT="/usr/local/go"
GOSUMDB="off"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_arm64"
GOVCS=""
GOVERSION="go1.16beta1"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/gg/fgcf1wps4tz51d_x38ybzpv00000gn/T/go-build2055022242=/tmp/go-build -gno-record-gcc-switches -fno-common"

开始构建

>>>
/usr/local/go/pkg/tool/darwin_arm64/link: running clang failed: exit status 1
ld: warning: ignoring file /var/folders/gg/fgcf1wps4tz51d_x38ybzpv00000gn/T/go-link-948954574/go.o, building for macOS-x86_64 but attempting to link with file built for unknown-arm64
...
Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

go build -v -ldflags="-linkmode=internal"

>>>

loadmacho: /Users/haoliu/Library/Caches/go-build/67/6777448f029f7eb3953d5848709f80c5ab0f3bf855d852152a1d23834392afea-d(_x001.o): mach-o object but not arm64
loadmacho: /Users/haoliu/Library/Caches/go-build/67/6777448f029f7eb3953d5848709f80c5ab0f3bf855d852152a1d23834392afea-d(_x002.o): mach-o object but not arm64

我尝试下载 llvm/clang 并从源代码构建,但 clang 目标仍然是 x86_64-apple-darwin20.1.0

最佳答案

使用homebrew/arm64下载llvm/arm64后,问题解决。

arch=arm64 brew install llvm

关于macos - golang 1.16 cgo/clang 在 darwin/arm64 上构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65706980/

相关文章:

git - 无论是否使用 sudo,都无法在未以 root 身份登录的情况下克隆 github repo

Golang,使用子包中主包的结构或函数

go - 如何将结构作为参数传递给 xml-rpc

ios - 未从App Store下载时如何更新XCode

python - 在 Mac OS 上为 python 安装 cx_oracle

assembly - 如何使用 Clang 在 C 程序中嵌入 LLVM 汇编或内在函数?

android - 初始化超过12个字节的结构将获得SIGILL

c++ - clang++/g++/gfortran之间的简单测试用例

java BufferedReader 适用于 windows 而不是 mac

go - 故意的 int 溢出