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의 호환성 문제에 대해 읽은 기억이 납니다. 저는 이것을 포기하고 직장에서 리눅스 서버에서 크로스컴파일을 했기 때문에 자세한 내용은 말씀드릴 수 없습니다.