使用 GCC 为 Mac iOS xCode 项目交叉编译 ARM 静态库

使用 GCC 为 Mac iOS xCode 项目交叉编译 ARM 静态库

我正在交叉编译 ARM 目标玩具示例静态库,以便在 Mac iOS xCode 项目中使用。

在 lib 中只有 2 个文件atoy.c,并且atoy.h有简单的函数接受 2 个int参数并返回int它们组合的结果。

交叉编译步骤为:

arm-none-eabi-gcc -g -Wall -march=armv7-a -c atoy.c
arm-none-eabi-ar rcs libatoy.a atoy.o
arm-none-eabi-ranlib libatoy.a

在项目类型 iOS 应用程序的 xCode 7.1.1 上使用的结果libatoy.a出现以下错误:

... normal armv7
...
export IPHONEOS_DEPLOYMENT_TARGET=9.1
...
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.1.sdk
...
/Users/.../Library/Developer/Xcode/DerivedData/.../Build/Intermediates/....build/Debug-iphoneos/PerformanceTest.build/Objects-normal/armv7/....LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=9.1 -dead_strip -fembed-bitcode-marker -fobjc-arc -fobjc-link-runtime -latoy -Xlinker -dependency_info -Xlinker
...
ld: warning: ignoring file /Users/.../libatoy.a, file was built for archive which is not the architecture being linked (armv7): /Users/.../libatoy.a
Undefined symbols for architecture armv7:
    "_aadd", referenced from:
    -[ViewController runTest] in ViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Linux Mint 17.2 x64 上生成的 .a 文件格式应该存在一些差异。或者是硬加交叉编译build-host-target的问题?

我正在使用gcc-arm-none-eabi包。

答案1

我确实记得在尝试交叉编译适用于 ARM 的 NetBSD 7 时读过有关 XCode 7 的兼容性问题的文章。我放弃了这一点,并在工作中的 Linux 服务器上交叉编译了它,所以我无法提供更多细节。

相关内容