我已经在这个问题上工作了一整天,非常坚持。我很乐意帮忙。
我试图编译一个 C / Go 代码在我的 iOS Swift 应用程序中运行。该库编译正常的 amd64 架构。
要进行编译,我从这个编译步骤开始,生成一个静态的.a 存档。
GOOS = ios GOARCH = arm64 CGO_ENABLED = 1 CC = $(go env GOROOT) / misc / ios / clangwrap.sh go build-ldflags-w-v-tags ios-o "storj_上行链路-arm64.a"-buildmode = c-archive
在我使用磨砂转换为 dylib 之后的下一步
xcrun-sdk iphoneos clang-arch arm64-fpic-shared-Wl,-all_load storj_上行链路-arm64.a-framework Corefoundation-o libuplinkc.dylib
在 Xcode 中,我将依赖关系拖到复制文件构建阶段。从 Swift,我检查我需要的各种符号地址,我可以确认超出该步骤。但是当实际的二进制文件运行时,我收到一系列运行时错误。
dyld4 配置:DYLD_LIBRARY_PATH = / usr / lib / system / 内省 DYLD_INSERT_LIBRARIES = / Developer / usr / lib
在 lldb 调试器中,此消息与线程 12 信号 SIGILL 错误一起给出。
libuplinkc.dylib`golang.org/x/sys/cpu.getisar0:
-> 0x10c7a36f0 <+0>: mrs x0, ID_AA64ISAR0_EL1
0x10c7a36f4 <+4>: str x0, [sp, #0x8]
0x10c7a36f8 <+8>: ret
0x10c7a36fc <+12>: udf #0x0
基于这些错误和步骤,我相信这与 Go 构建过程有关,但不清楚什么是。如果这有所帮助,我正在使用 Storj 上行链路-c 到 Swift 绑定 (relevant ticket here)。人们似乎非常确信 C 库很好,并建议我去 Go 社区进行更多调试。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(70条)