【问题标题】:xcrun/lipo freezes with OS X Mavericks and XCode 4.xxcrun/lipo 在 OS X Mavericks 和 XCode 4.x 中冻结
【发布时间】:2013-09-06 23:12:06
【问题描述】:

尝试使用 easy_install 或 pip 安装 psycopg2,终端卡在 xcrun 和 lipo 之间的循环中。

sidwyn$ sudo easy_install psycopg2
Searching for psycopg2
Reading https://pypi.python.org/simple/psycopg2/
Reading http://initd.org/psycopg/
Reading http://initd.org/projects/psycopg2
Best match: psycopg2 2.5.1
Downloading https://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.5.1.tar.gz#md5=1b433f83d50d1bc61e09026e906d84c7
Processing psycopg2-2.5.1.tar.gz
Writing /tmp/easy_install-dTk7cd/psycopg2-2.5.1/setup.cfg
Running psycopg2-2.5.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-dTk7cd/psycopg2-2.5.1/egg-dist-tmp-4jaXas
clang: warning: argument unused during compilation: '-mno-fused-madd'

它在 xcrun 和 lipo 之间反弹,并永远卡在这个循环中。希望对此有一些见解。

我使用的是 OS X Mavericks 10.9,最新版本。

【问题讨论】:

    标签: python xcode psycopg2 osx-mavericks lipo


    【解决方案1】:

    更合适的解决方法是:

    ln /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo
    xcrun -k lipo
    

    原因:xfx 的修复可能会破坏在未来版本的 Xcode 中使用 xcode-select 选择工具链的能力。

    Pre- Mavericks 和 Xcode 5.x,/usr/bin/lipo 似乎是 actual lipo 工具的 actual 位置(试试 cat /usr/bin/lipo - 看起来像一个大的二进制文件)。在 Mavericks / Xcode 5.x 中,lipo 被移动到 XcodeDefault.xctoolchain,/usr/bin/lipo 处的二进制文件是一个薄包装器,似乎只是调用了xcrun lipo(参见nm /usr/bin/lipo),它反过来找到了 lipo 的位置基于xcode-select

    很可能,xcode-select 和/或 Mavericks 的新版本将 /usr/bin/lipo 替换为包装器版本。如果您随后尝试将 lipo 与 4.x 工具链 xcode-select'd 一起使用,它将无法工作,因为该工具不包含在旧版本的 Xcode 中。幸运的是,由于某种原因,它仍然包含在 iPhoneOS.platform 中,否则您可能不得不从未损坏的

    看起来好像在 4->5 开关中的 Developer/usr/bin 和 Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin 之间有很多工具的改组 - 如果有的话我不会感到惊讶其他不常用的命令行工具也存在类似问题。

    最后,xcrun 在找不到工具时挂起的事实似乎是一个苹果错误,简单明了。

    【讨论】:

    • 这个 q 应该标记为 mavericks/xcode/lipo/xcrun 而可能不是 python/etc,因为它是构建工具链问题而不是 python 问题。
    • 另一个注意事项 - 如果 lipo 在上述操作后仍然挂起,xcrun -k lipo 将清除缓存的(不正确的)位置。而且,令人惊叹的是,如果您在构建挂起时执行此操作,它将立即解除挂起。
    【解决方案2】:

    这个对我有用:

    xcode-select -–install
    sudo mv /usr/bin/lipo /usr/bin/lipo.orig
    sudo ln -s /Library/Developer/CommandLineTools/usr/bin/lipo /usr/bin
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,通过将 /usr/bin/lipo 替换为 Max OS 10.7 中的旧版本来解决。

      更新: 将 /usr/bin/lipo 替换为 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin 即可。您需要 Xcode 应用程序或 img 文件。

      【讨论】:

      • 想知道这可能会产生什么样的影响?
      【解决方案4】:

      最简单的解决方案可能是升级到 XCode 5.x。

      【讨论】:

      • 确实如此。只需要和客户一起工作。他们安装了最新最好的命令行工具,但安装了旧版本的 XCode 4.1.x 在我们升级 XCode 后,我们不再遇到这个问题。非常非常奇怪。
      • 我在经营 Mavericks 并且遇到了这个问题。升级到 XCode 6 修复了它。
      【解决方案5】:

      我从我的TimeMachine 备份中恢复了/usr/bin/lipo(更新到 OSX 10.9 之前的时间戳)。 然后XCode 4.x 工作正常,存档不再挂起。

      【讨论】:

        猜你喜欢
        • 2013-12-27
        • 1970-01-01
        • 2013-10-21
        • 2014-04-12
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多