英文:
How to build a Go app that can cross-macOS-version?
问题
这是我最近创建的 macOS 应用程序:https://github.com/evillt/macmineable-release
这是我遇到的问题:https://github.com/evillt/macmineable-release/issues/18
我在我的设备上构建了这个应用程序,它可以在任何 Big Sur 设备上正常运行,甚至是 M1 设备,但无法在 Catalina(10.15)上运行。
所以我想要构建一个可以在多个 macOS 版本上运行的单个应用程序版本。
非常感谢任何建议!
更新
我的设备是 MacBook Pro 2015,Intel I5 芯片,Big Sur 11.5.2。
我在我的设备上构建了这个应用程序,它可以在以下设备上正常运行:
- 我的设备
- MacBook 12 英寸,Big Sur 11.0
- 其他 M1 设备(Big Sur 11.0 或更高版本)
但无法在 MacBook Pro Intel I7 Catalina 10.15.7 上运行。问题在这里。
这就是我所知道的。
英文:
Here is my recently created macOS app: https://github.com/evillt/macmineable-release
and here is my facing issue: https://github.com/evillt/macmineable-release/issues/18
I built the app on my machine it can run normally on any BigSur device, even M1 devices, but can not run on Catalina(10.15).
So what I want is to build a version that can run on multi-macOS-version with a single app.
Huge thanks for any suggestions!
update
My device is MacBook Pro 2015, Intel I5 chip, Big Sur 11.5.2.
I build this app on my device, it can run normally on:
- My device
- MacBook 12-inch Big Sur 11.0
- Other M1 devices (Big Sur 11.0 or above)
But can not run on MacBook Pro Intel I7 Catalina 10.15.7. The issue here.
That is all I know.
答案1
得分: 2
你需要在构建过程中更改Go使用的CC
编译器。
运行以下命令查看当前的CC
编译器:
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
设置为你需要的显式版本,例如:
CC=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A/lib/clang go build
英文:
You need to change the CC
compile go uses during your builds.
go env CC
clang
which most likely uses the version in /usr/bin/clang
if you have Xcode installed - or really just the Command Line Tools
you can see a variety of versions for the last few major releases e.g.:
$ 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
so to build against an older SDK like MaxOSX10.15
, set CC
to the explicit version you need for your go build
like so:
CC=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A/lib/clang go build
答案2
得分: 0
我有很好的经验,可以将Unix可执行文件构建并打包为Mac应用程序,使用的是https://medium.com/@mattholt/packaging-a-go-application-for-macos-f7084b00f6b5上的说明手册。
构建Unix可执行文件:
go build -o bin/{program} {program}
在macOS(Big Sur)上打包应用程序并在macOS(High Sierra)上安装成功。
英文:
I have good experience building as a Unix executable and packaging as a Mac app, by using the instructions manual at
https://medium.com/@mattholt/packaging-a-go-application-for-macos-f7084b00f6b5
build Unix exec file
go build -o bin/{program} {program}
Packaging the application on macOS (Big Sur) and installing it on macOS (High Sierra) was successful.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论