ios - Apple Mach-O 链接器警告。 lib/libxyz.a 在文件 lib/libxyz.a 中缺少所需的体系结构 i386

标签 ios iphone xcode

我是 Apple iOS 开发新手。我正在尝试创建静态库并将其添加到主应用程序。

  • 创建了图书馆项目并将其作为依赖项目添加到主应用程序中。它有效。
  • 现在我从库项目(存在于 debug-iphoneos 下)中获取 lib.a(静态库)并复制到主应用程序。测试了主应用程序 - 它可以工作。

现在,当我尝试将主应用程序复制到其他位置(或什至更改文件夹名称 - 主应用程序所在的位置)并尝试在模拟器上运行时,出现以下错误: 忽略文件/Users/.../lib.a,在文件/Users/.../lib.a 中缺少所需的体系结构 i386

我不太明白路径上的关系/依赖。

最佳答案

问题解决了。

我正在使用 XCode 5.0.2 和 iOS 7。当我编译静态库时,Xcode 说它正在构建一个通用库(但实际上不是)。 “Products”目录显示 libxyz.a(位于 iphoneos/目录中) - 这实际上适用于 iPhone 设备的 ARM6 和 ARM7。因此,当我获取这个“libxyz.a”文件并在另一个项目中使用它时,链接器常常抛出警告“缺少所需的架构 i386”。

我关注了http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial

使用脚本生成单个二进制文件,其中包含模拟器和 iPhone 设备二进制文件。

# define output folder environment variable
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

# Step 1. Build Device and Simulator versions
xcodebuild -target ImageFilters ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild -target ImageFilters -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

# Step 2. Create universal binary file using lipo
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a"

# Last touch. copy the header files. Just for convenience
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/"

关于ios - Apple Mach-O 链接器警告。 lib/libxyz.a 在文件 lib/libxyz.a 中缺少所需的体系结构 i386,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22245876/

相关文章:

iphone - 如何显示电子邮件已发送通知 ipad

ios - UIViewController 已经设置好,但我想使用 SlackTextViewController

objective-c - 在隐藏/显示状态栏时向上/向下滑动所有 View

iphone - 如何在界面构建器中设置stretchableImageWithLeftCapWidth?

iphone - 关于以下内存泄漏的任何建议

ios - swift 3 图 : FILTER and CONTAINS for Entities

ios - 使用 Xcode 4 部署到 iOS 3.1.3 设备

ios - AWS Cognito 和 DynamoDB 中的 Swift 未解析标识符

ios - Ionic iframe 加载在 iOS 上无法完全运行

iPhone AudioQueue - 读取传入的音频数据以确定 BPM