【问题标题】:Can't cross compile C library for arm (iOS) [closed]无法为arm(iOS)交叉编译C库[关闭]
【发布时间】:2016-08-08 19:07:06
【问题描述】:

我正在尝试为 iOS 交叉编译 libDSM,从 arm64 开始。

我已经下载了源代码,并一直在尝试使用以下配置它:

export XCODEDIR=$(xcode-select -p)
export DEVROOT=${XCODEDIR}/Platforms/iPhoneOS.platform/Developer
export SDKROOT=$DEVROOT/SDKs/iPhoneOS.sdk
export CFLAGS="-arch arm64 -pipe -no-cpp-precomp -isysroot $SDKROOT -mios-version-min=10.0 -I$SDKROOT/usr/include/"
export LDFLAGS="-mthumb -arch arm64 -isysroot $SDKROOT -mios-version-min=10.0"

./configure --host arm-apple-darwin --prefix $PWD/build/arm64

此错误停止:

configure: error: C preprocessor "/lib/cpp" fails sanity check

configure.log 中的错误是:

configure:4504: checking how to run the C preprocessor
configure:4535: gcc -E  conftest.c
In file included from conftest.c:14:
In file included from /Users/pmacro/Downloads/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/limits.h:37:
In file included from /Users/pmacro/Downloads/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/usr/include/limits.h:63:
/Users/pmacro/Downloads/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/usr/include/sys/cdefs.h:761:2: error: Unsupported architecture
#error Unsupported architecture
 ^

configure.log 前面的一条可能相关的消息是:

configure:3752: ./conftest

./configure: line 3754: ./conftest: Bad CPU type in executable

请注意,对于 x86_64(我正在构建的平台),它编译得很好,但对于任何 arm 架构,它都会失败。

我查看了 iOS 交叉编译的示例,它们似乎都在遵循这些步骤。我正在运行预发布软件(macOS Sierra 和 Xcode 8),但在 Sierra 上运行 Xcode 7 时遇到了同样的问题。感谢您的帮助。

【问题讨论】:

  • configure 脚本作为gcc -E 运行预处理器,命令失败。它发出的诊断信息“不受支持的架构”来自一个包含在其中的头文件中的 #error 指令,因此一种可能性是您以某种方式选择了错误的平台 SDK。您在CFLAGS 中传递的一些标志看起来像是真正的预处理器标志,应该在CPPFLAGS 中——当然是-isysroot(它也应该在LDFLAGS 中,因为它是)和-I。也许其他人也一样。解决这个问题可能会有所帮助。
  • 谢谢@JohnBollinger。我刚刚想通了——我需要在 CPPFLAGS 和 CFLAGS 中指定架构(-arch arm64)。也感谢其他建议。我会看看这些并整理一下。

标签: ios c xcode gcc clang


【解决方案1】:

问题是我需要在 CPPFLAGS 和 CFLAGS 中指定架构(-arch arm64)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多