【问题标题】:compile C code for iOS armv7+arm64 using clang xcode 9使用 clang xcode 9 为 iOS armv7+arm64 编译 C 代码
【发布时间】:2018-12-29 19:28:49
【问题描述】:

我正在尝试为 armv7 和 arm64 制作一个二进制文件。 我正在使用这个命令来编译一个简单的 C 文件:

clang -arch arm64 hello.c -o hello -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk

如何将 armv7 添加到此命令以支持 iPad 4 等旧设备?知道 xCode 9 在 iOS 11 中停止支持 armv7 了吗?

【问题讨论】:

    标签: ios c xcode9 jailbreak llvm-clang


    【解决方案1】:

    只需添加-arch armv7:

    clang -arch armv7 -arch arm64 hello.c -o hello -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
    

    这将产生一个包含两种架构的胖二进制文件。

    也只是一个注释,您可以使用xcrun 来避免必须提供完整的系统根目录:

    xcrun -sdk iphoneos clang -arch armv7 -arch arm64
    

    【讨论】:

      【解决方案2】:

      作为对 Siguza 答案的更新,从 Xcode 11 开始获取 SYSROOT 的方法是:

      xcrun --sdk iphoneos --show-sdk-path

      【讨论】:

      • 问题不在于 sysroot,而 Siguza 使用 xcrun 意味着根本不需要提供它。
      • @trojanfoe 我认为这是一条必不可少的信息,没有它,OP 的尝试就会失败。截至今天,Siguza 的回答并没有为 SYSROOT 提供正确的结果,因此我的这个答案。
      猜你喜欢
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      相关资源
      最近更新 更多