【发布时间】: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)。也感谢其他建议。我会看看这些并整理一下。