我如何让 `go get` 针对 x86_64 而不是 i386 进行构建

我正在尝试使用 go-qml 或 gotk3 来构建一个可以在 OS X 下运行的非常简单的桌面应用程序。但是,当我尝试使用go get安装任一库时,它将尝试为 i386 构建并跳过已构建的库针对 x86_64。我可以尝试获取这些库的 32 位版本,但我更愿意为 64 位构建。我如何指示去这样做?


错误后的警告看起来是这样的:


go get gopkg.in/qml.v1

# gopkg.in/qml.v1

ld: warning: ld: warning: ld: warning: ignoring file /usr/local/Cellar/qt5/5.3.2/lib/QtWidgets.framework/QtWidgets, file was built for x86_64 which       is not the architecture being linked (i386): /usr/local/Cellar/qt5/5.3.2/lib/QtWidgets.framework/QtWidgetsignoring file /usr/local/Cellar/qt5/5.3.2/lib/QtGui.framework/QtGui, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/Cellar/qt5/5.3.2/lib/QtGui.framework/QtGuiignoring file /usr/local/Cellar/qt5/5.3.2/lib/QtQuick.framework/QtQuick, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/Cellar/qt5/5.3.2/lib/QtQuick.framework/QtQuick



心有法竹
浏览 235回答 2
2回答

杨__羊羊

将环境变量GOARCH设置为 value amd64。这指示go命令为amd64. 的其他有效值GOARCH是386和arm。

侃侃无极

供参考Go 编译器支持以下指令集:amd64, 386x86 指令集,64 位和 32 位。arm64,手臂ARM 指令集,64 位 (AArch64) 和 32 位。mips64, mips64le, mips, mipsleMIPS 指令集,大端和小端,64 位和 32 位。ppc64, ppc64le64 位 PowerPC 指令集,大端和小端。RISCV6464 位 RISC-V 指令集。s390xIBM z/架构。瓦斯姆WebAssembly。(来自:简介| 从源代码安装 Go | Doc @ golang.org)此外,您还可以go tool dist list检查可在您的机器中构建的可用架构。$ go tool dist listaix/ppc64android/386android/amd64android/armandroid/arm64darwin/amd64darwin/arm64dragonfly/amd64freebsd/386(* snip *)    为 macOS (Intel/ARM64) 构建静态二进制文件如下。以这种方式,我认为GOOS="darwin" GOARCH="arm64"组合将用于M1建筑。MyVar="foo"CGO_ENABLED=0 \        GOOS="darwin" \        GOARCH="amd64" \        GOARM="" \        go build \        -ldflags="-s -w -extldflags \"-static\" -X 'main.myVar=${MyVar}'" \        -o="/path/to/export/bin/myApp" \        "/path/to/main.go"要在 ARM v6 上编译 Linux,例如 RaspberryPi Zero W,组合如下。$ CGO_ENABLED=0 GOOS="linux" GOARCH="arm" GOARM="6" go build .
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go