2012-05-16 4 views
2

Я пытаюсь создать свою первую статическую библиотеку, и у меня возникла проблема с компиляцией. Я имею в виду, я могу собрать свою библиотеку и каждая вещь выглядит хорошо, но когда я создал тестовый проект, чтобы проверить это, я получил такую ​​ошибку:iOS: сбор статических библиотек

ld: warning: ignoring file /Users/*/Desktop/TestApp/LibProva/libProva.a, file was built for archive which is not the architecture being linked (i386) Undefined symbols for architecture i386: "_OBJC_CLASS_$_Prova", referenced from: objc-class-ref in AppDelegate.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

ld: warning: ignoring file /Users/**/Desktop/TestApp/LibProva/libProva.a, file was built for archive which is not the architecture being linked (i386)

Так что я думаю Thats что-то не так с компиляции (в связи с различными архитектуры в симуляторе и в устройстве), но я не могу понять, как это сделать правильно. Может ли кто-нибудь объяснить мне, как решить эту проблему?

ответ

2

Вы должны использовать липо для создания универсального бинарного:

#!/bin/bash 
#build the device 
echo building for ARM architecture 
xcodebuild -sdk iphoneos4.3 "ARCHS=armv6 armv7" build > /dev/null 
#build the simulator 
echo building for the i386 architecture 
xcodebuild -sdk iphonesimulator4.3 "ARCHS=i386 x86_64" "VALID_ARCHS=i386 x86_64" build > /dev/null 
#make the folder 
mkdir "Fat Binary" 
#lipo suck it together 
echo lipo binaries together 
lipo -output Fat\ Binary/libmylib.a -create build/Release-iphoneos/libprefuse_visual_iOS.a build/Release-iphonesimulator/libmylib.a 
echo lipo binary saved at $./Fat Binary/libmylib.a 
echo copying headers 
cp -R build/Release-iphoneos/usr "Fat Binary" 
echo [COMPLETE] 

Не забудьте заменить экземпляры libmylib.a с указанием фактического названия .a, генерируемого xcodebuild.

Смежные вопросы