GCC를 사용하여 Mac iOS xCode 프로젝트용 ARM 정적 라이브러리 크로스 컴파일

GCC를 사용하여 Mac iOS xCode 프로젝트용 ARM 정적 라이브러리 크로스 컴파일

Mac iOS xCode 프로젝트에서 사용하기 위해 ARM 타겟팅을 위한 장난감 예제 정적 라이브러리를 크로스 컴파일하고 있습니다.

lib에는 2개의 파일만 있으며 atoy.c, 2개의 매개변수를 받아들이고 그 조합의 결과를 반환하는 atoy.h간단한 함수가 있습니다 .intint

크로스 컴파일 단계는 다음과 같습니다.

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

관련 정보