xcrun/lipo在OS X Mavericks和XCode 4.x上会卡住

26

我一直在尝试使用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最新版本。

5个回答

51

一个更合适的修复方法是:

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选择您的工具链的功能。

在Mavericks和Xcode 5.x之前,/usr/bin/lipo似乎是实际的lipo工具的实际位置(尝试cat /usr/bin/lipo - 看起来像一个大二进制文件)。在Mavericks / Xcode 5.x中,lipo已移动到XcodeDefault.xctoolchain,并且位于/usr/bin/lipo的二进制文件是一个薄包装器,似乎只调用xcrun lipo(请参见nm /usr/bin/lipo),后者根据xcode-select找到lipo的位置。

很可能,新版本的xcode-select和/或Mavericks将/usr/bin/lipo替换为包装器版本。如果您尝试使用xcode-select的4.x工具链进行lipo操作,则无法正常工作,因为该工具不包含在旧版本的Xcode中。幸运的是,在某些情况下它仍然包含在iPhoneOS.platform中,否则您可能需要从未损坏的<=10.8机器中提取它。

看起来,在4->5切换中有很多工具在Developer / usr / bin和Developer / Toolchains / XcodeDefault.xctoolchain / usr / bin之间进行了调整 - 如果其他不常用的命令行工具也存在类似问题,那就不足为奇了。

最后,xcrun无法找到工具时会挂起,这似乎是一个纯粹的苹果漏洞。


1
这个问题应该使用Mavericks/Xcode/Lipo/Xcrun标记,而不是Python等其他标记,因为它是一个构建工具链问题,而不是Python问题。 - scztt
另外需要注意的是 - 如果在上述操作后lipo仍然挂起,xcrun -k lipo将清除缓存(不正确)位置。更棒的是,如果您在构建过程中执行此操作,它将立即解除挂起状态。 - scztt

12

这一个对我有效:

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

3
最简单的解决方案可能是升级至XCode 5.x版本。

确实。刚刚与客户一起解决了这个问题。他们安装了最新和最棒的命令行工具,但是使用的是旧版本的XCode 4.1.x。在我们升级了XCode之后,我们不再遇到这个问题了。非常奇怪。 - defbyte
我正在运行Mavericks操作系统并遇到了这个问题。升级到XCode 6后问题得到解决。 - tronbabylove

3

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

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


不知道这可能会有什么后果? - Bartek

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接