【问题标题】:linking against dylib built for MacOSX file '/usr/lib/libSystem.B.dylib' for architecture i386链接为 MacOSX 文件“/usr/lib/libSystem.B.dylib”构建的 dylib,用于架构 i386
【发布时间】:2013-10-06 23:02:56
【问题描述】:

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

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

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

我将我的开发人员配置文件从旧 MacBook 导入到新 MacBook Air。但是当我尝试运行它时,我收到以下错误消息。

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

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

谢谢

【问题讨论】:

  • 您需要重新构建该 dylib 以针对 iOS 设备和模拟器。
  • 找到构建dylib的原始项目并为其创建一个iOS目标。

标签: xcode cordova xcode5


【解决方案1】:

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

修复架构问题:

  1. <strong>Build Settings</strong> 中删除了所有架构 --> <strong>Valid Architecture</strong>
  2. <strong>armv6</strong> 添加到<strong>Build Settings</strong> --> <strong>Valid Architecture</strong>


修复libSystem.B.dylib 问题:

  1. <strong>Build Settings</strong> 中删除了<strong>/usr/lib/libSystem.B.dylib</strong> --> <strong>Linking</strong> --> <strong>Other Linker Flags</strong>

  2. 还从<strong>Build Settings</strong> 中删除了<strong>-weak_library</strong> --> <strong>Linking</strong> --> <strong>Other Linker Flags</strong>

【讨论】:

  • 就我而言,我正在尝试将在 xcode 4.5 中制作的项目运行到 xcode 5.0 中。所以这个错误发生在每个项目中。所以我从“其他链接器标志”中删除了所有链接器标志,它可以工作。
  • 非常感谢这位朋友......正是我的问题......而且我需要的解决方案非常好:)
  • 在寻找解决方案 2 周后,就是这样!
【解决方案2】:

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

【讨论】:

  • 我应该在哪里输入这些?是在终端吗?另外,对于第 3 步,我可以随意调用这些库吗?什么会替换占位符文本?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
  • 2013-09-11
  • 2013-12-03
  • 2011-11-02
  • 2015-06-11
  • 2017-04-27
  • 2015-01-19
相关资源
最近更新 更多