我正在交叉编译 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 服务器上交叉编译了它,所以我无法提供更多细节。