为针对架构i386的MacOSX文件'/usr/lib/libSystem.B.dylib'构建的dylib链接

时间:2013-09-30 22:40:21

标签: xcode cordova xcode5

我最近将我的开发MacBook从经典的MacBook(32位)转换为MacBook Air(64位)。我正在尝试打开一个在运行XCode 4的旧MacBook(32位)上制作的项目。

该项目是PhoneGap 1.7.0中的PhoneGap应用程序。

我的新MacBook Air(64位)正在运行XCode 5.

我将我的旧版MacBook中的开发人员个人资料导入到新的MacBook Air中。但是当我尝试运行它时,我收到以下错误消息。

enter image description here

enter image description here

我尝试将构建设置中的架构更改为armv7,但仍然没有运气:(

有谁知道我为什么会收到此错误以及如何解决此问题?

由于

2 个答案:

答案 0 :(得分:26)

确实如此,当我的应用程序不支持armv7时,XCode 5将默认架构更改为armv7。我正在运行Cordova 1.7.0,该版本不支持armv7架构。

修复架构问题:

  1. Build Settings移除所有架构 - > Valid Architecture
  2. armv6添加到Build Settings - > Valid Architecture enter image description here

  3. 修复libSystem.B.dylib问题:

    1. /usr/lib/libSystem.B.dylib移除Build Settings - > Linking - > Other Linker Flags

    2. 同时从-weak_library - >中删除Build Settings Linking - > Other Linker Flags enter image description here

答案 1 :(得分:1)

Xcode 5要求您为模拟器(1)和iOS(2)构建库。然后,您可以将这些(3)合并为一个胖二进制文件,然后链接到您的主项目。我使用与Xcode用于构建主项目相同的标志(如screendump中所示)。

我在常见的gnu工具链变量中表示:

<强> 1。为模拟器构建库

CC=clang
IPHONEOS_DEPLOYMENT_TARGET=7.0
PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH"
CFLAGS="-arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -mios-simulator-version-min=7.0"

<强> 2。构建iOS库

CC=clang
IPHONEOS_DEPLOYMENT_TARGET=7.0
PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH"
CFLAGS="-arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -miphoneos-version-min=7.0"

第3。合并为胖二进制文件

根据您使用的内容,选择.a.dylib

lipo -create "your armv7 lib".a     "your simulator lib".a     -output "your lib".a
lipo -create "your armv7 lib".dylib "your simulator lib".dylib -output "your lib".dylib