objective-c - iOS : Compiling Static Libraries

标签 objective-c xcode static-libraries test-project

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

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)

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

最佳答案

您必须使用 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 的实例替换为 xcodebuild 生成的 .a 的实际名称。

关于objective-c - iOS : Compiling Static Libraries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621020/

相关文章:

c++ - 如何解决 "error LNK2019: unresolved external symbol"?

objective-c - SKPaymentTransaction expires_date,似乎 "auto renew"机制在沙箱中不起作用

objective-c - NSButton 不会设置字体 : when layer backed

ios - Xcode 10 转换为 Swift 4.2 失败

javascript - 使用 iOS 通过 Javascript 下载网站上的文件

c - 库的 Makefile

c++ - 在 C++ 项目中使用 C DLL

objective-c - 网络广播的流媒体基本上是如何工作的?

iphone - iOS - 后台加速度计显示位置服务弹出窗口,但我们不需要位置服务

ios - ITMS-90683 : Missing Purpose String in Info. plist NSCameraUsageDescription