【问题标题】:Apple Mach-O Linker Warning. lib/libxyz.a missing required architecture i386 in file lib/libxyz.aApple Mach-O 链接器警告。 lib/libxyz.a 文件 lib/libxyz.a 中缺少所需的体系结构 i386
【发布时间】:2014-03-14 16:50:43
【问题描述】:

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

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

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

我不太了解路径上的关系/依赖关系。

【问题讨论】:

  • 虽然我不确定你指的是哪个库,但有些库文件可能没有 i386 架构(模拟器)。在设备上试用。
  • 我已经创建了自己的静态库。当静态库项目添加为依赖项项目并将静态库 (.a) 添加到主应用程序时,静态库可以正常工作。但是当我尝试更改主应用程序的位置时,XCode 开始抱怨 (.a) 静态库缺少 i386 架构:(

标签: ios iphone xcode


【解决方案1】:

问题解决了。

我正在使用 XCode 5.0.2 和 iOS 7。当我编译静态库时,Xcode 说它正在构建一个通用库(但实际上不是)。 “产品”目录显示 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}/"

【讨论】:

  • 虽然它可以工作,但请注意脚本不会从子构建中捕获错误。因此,如果其中一个 xcodebuild 的状态为 false,它仍然会说构建成功。
猜你喜欢
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 2011-12-06
相关资源
最近更新 更多