2

我正在尝试构建我的第一个静态库,但遇到了编译问题。我的意思是我可以编译我的库并且一切看起来都很好,但是当我设置一个测试项目来测试它时,我得到了这种错误:

ld:警告:忽略文件 /Users/ * /Desktop/TestApp/LibProva/libProva.a,文件是为存档而构建的,它不是被链接的架构 (i386) 架构 i386 的未定义符号:“_OBJC_CLASS_$_Prova”,引用自:AppDelegate.o ld 中的 objc-class-ref:未找到架构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

ld:警告:忽略文件/Users/**/Desktop/TestApp/LibProva/libProva.a,文件是为存档而构建的,它不是被链接的架构(i386)

所以我想编译有问题(由于模拟器和设备中的架构不同),但我不知道如何以正确的方式去做。有人可以解释我如何解决这个问题吗?

4

1 回答 1

2

您必须使用 lipo 创建通用二进制文件:

#!/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的实际名称。.axcodebuild

于 2012-05-16T19:13:05.293 回答