Mac iOSxCodeプロジェクトで使用するためにARMターゲットのおもちゃの例の静的ライブラリをクロスコンパイルしています。
Libには、atoy.c
とatoy.h
の2つのファイルしかなく、単純な関数は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
結果として得られたlibatoy.a
は、プロジェクトタイプiOSアプリのxCode 7.1.1で使用され、次のエラーが発生します。
... 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.2x64で生成される.aファイル形式の違いがいくつかあるはずです。それとも、カナダのクロスコンパイルビルド-ホスト-ターゲットの問題は難しいですか?
gcc-arm-none-eabi
パッケージを使用しています。
NetBSD 7 for ARMをクロスコンパイルしようとしたときに、XCode7との互換性の問題について読んだことを覚えています。私はそれをあきらめて、仕事中のLinuxサーバーでクロスコンパイルしたので、これ以上詳しく説明することはできません。