Mac iOS xCodeプロジェクトで使用するためのARMターゲティング用のおもちゃの例静的ライブラリをクロスコンパイルしています。
libには2つのファイルのみがありatoy.c
、2つのパラメータを受け入れてその組み合わせの結果を返すatoy.h
単純な関数があります。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ファイルの形式にはいくつかの違いがあります。それともビルド - ホスト - ターゲットクロスコンパイルに問題がありますか?
パッケージを使用していますgcc-arm-none-eabi
。
答え1
ARM用のNetBSD 7をクロスコンパイルしようとすると、XCode 7の互換性の問題について読んだことがあります。私はこれをあきらめ、職場でLinuxサーバーでクロスコンパイルを行ったので、詳細についてはお話できません。