【发布时间】:2020-09-13 02:14:26
【问题描述】:
有没有办法从 go 代码构建动态库(dylib)?我为 x86_64 和 i386 完成了它,但对于 arm64 和 armv7(s),它说“darwin/arm 不支持 buildmode=c-shared”。为什么? 或者有没有办法将静态 a-library 文件转换为动态链接的 Mach-O dylib? 我可以使用 lipo 将 dylib 和 a 文件合并到一个通用二进制文件中,但这仍然将它们保留为静态存档。
我确信必须有一个命令可以将静态存档转换为动态 Mach-O 库。任何帮助表示赞赏,谢谢!
【问题讨论】:
-
这能回答你的问题吗? Convert .a to .dylib in Mac osx
-
同样的概念适用于iOS,只需使用
xcrun -sdk iphoneos clang -arch arm64 [rest of flags]。 -
这是一个很好的开始ooint,谢谢@Siguza - 但我因缺少这样的符号而出错:架构arm64的未定义符号:“_CFBundleCopyResourceURL”,引用自:storj_uplink.a中的_init_working_dir(000021 .o) "_CFBundleGetMainBundle",引用自:storj_uplink.a(000021.o)中的_init_working_dir
-
啊,明白了!必须添加 -Framework CoreFoundation。谢谢@Siguza!
-
当我按照这些说明编译 Storj uplink-c SDK 时,出现运行时错误:libuplinkc.dylib`golang.org/x/sys/cpu.getisar0: -> 0x104d7b110 : mrs x0, ID_AA64ISAR0_EL1 0x104d7b114 : str x0, [sp, #0x8] 0x104d7b118 : ret 0x104d7b11c : udf #0x0 有人遇到过这个吗?在github.com/storj-thirdparty/uplink-swift/issues/5上有更详细的描述
标签: ios macos archive shared dylib