首页 > 解决方案 > 使用 buildmode=c-archive 为 armv7s 编译

问题描述

我正在尝试编译我的 goarmv7sbuildmode=c-archive

它似乎并没有失败,但是生成的存档是armv7armv7s.

我使用以下设置:

export CGO_ENABLED=1
export GOOS="darwin"
export GOARCH="arm"
export GOARM="7"
export CGO_CFLAGS="-arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk -miphoneos-version-min=10.0"
export CGO_LDFLAGS="-arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk -miphoneos-version-min=10.0"

生成的存档最终看起来像这样:

$ nm libtest.a | grep armv7
libtest.a(go.o) (for architecture armv7):
libtest.a(000000.o) (for architecture armv7s):
libtest.a(000001.o) (for architecture armv7s):
libtest.a(000002.o) (for architecture armv7s):
libtest.a(000003.o) (for architecture armv7s):
libtest.a(000004.o) (for architecture armv7s):
libtest.a(000005.o) (for architecture armv7s):
libtest.a(000006.o) (for architecture armv7s):
libtest.a(000007.o) (for architecture armv7s):
libtest.a(000008.o) (for architecture armv7s):
libtest.a(000009.o) (for architecture armv7s):
libtest.a(000010.o) (for architecture armv7s):
libtest.a(000011.o) (for architecture armv7s):
libtest.a(000012.o) (for architecture armv7s):
libtest.a(000013.o) (for architecture armv7s):
libtest.a(000014.o) (for architecture armv7s):
libtest.a(000015.o) (for architecture armv7s):
libtest.a(000016.o) (for architecture armv7s):
libtest.a(000017.o) (for architecture armv7s):
libtest.a(000018.o) (for architecture armv7s):
libtest.a(000019.o) (for architecture armv7s):
libtest.a(000020.o) (for architecture armv7s):
libtest.a(000021.o) (for architecture armv7s):
libtest.a(000022.o) (for architecture armv7s):
libtest.a(000023.o) (for architecture armv7s):
libtest.a(000024.o) (for architecture armv7s):

请注意“go.o”目标文件是如何armv7代替armv7s.

我找不到环境变量的7s选项GOARM,所以我不确定在这里做什么。

标签: iosgo

解决方案


推荐阅读