首页 > 解决方案 > 如何构建一个可以跨 macOS 版本的 Go 应用程序?

问题描述

这是我最近创建的 macOS 应用程序:https
://github.com/evilt/macmineable-release ,这是我面临的问题:https ://github.com/evilt/macmineable-release/issues/18

我在我的机器上构建了应用程序,它可以在任何 BigSur 设备上正常运行,甚至是 M1 设备,但不能在 Catalina(10.15) 上运行。

所以我想要的是构建一个可以使用单个应用程序在多 macOS 版本上运行的版本。

非常感谢您的任何建议!

更新

我的设备是 MacBook Pro 2015,Intel I5 芯片,Big Sur 11.5.2。

我在我的设备上构建了这个应用程序,它可以正常运行:

但无法在 MacBook Pro Intel I7 Catalina 10.15.7 上运行。这里的问题。

这是我所知道的。

标签: macosgomacos-catalinamacos-big-sur

解决方案


您需要CC在构建期间更改 compile go 使用。

 go env CC

 clang

最有可能使用的版本/usr/bin/clang

如果你安装了 Xcode - 或者真的只是Command Line Tools你可以看到最近几个主要版本的各种版本,例如:

$ find  /Library/Developer/CommandLineTools -name clang

/Library/Developer/CommandLineTools/usr/bin/clang
/Library/Developer/CommandLineTools/usr/lib/clang
/Library/Developer/CommandLineTools/usr/lib/swift/clang
/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/A/lib/clang
/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A/lib/clang
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/A/lib/clang
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A/lib/clang
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/A/lib/clang
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A/lib/clang

因此,要针对较旧的 SDK 进行构建MaxOSX10.15,请设置CC为您需要的显式版本,go build如下所示:

CC=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A/lib/clang go build

推荐阅读