15

我尝试lldb在我的 Mac 上运行并在启动时得到这个:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/System/Library/PrivateFrameworks/LLDB.framework/Versions/A/Resources/Python/lldb/embedded_interpreter.py", line 1, in <module>
    import readline
ImportError: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined

我尝试添加环境变量VERSIONER_PYTHON_PREFER_32_BIT=yes,但仍然出现此错误。我认为 lldb 使用的 python 环境与其 Mac 主机不同,所以我在哪里进行更改以使其使用 32 位模式?谢谢。

更新:

我做了一个arch -i386 lldb,它在 32 位下工作。为了让它在 64 位下工作,我为 OS X 安装了一个 64 位版本的 python readline,但在原生 python 库(如termiostime. 所以我下载了python 2.7.3 64位安装程序DMG文件并安装了它的二进制文件;现在 lldb 终于在我的 10.8 山狮上以 64 位运行。谢谢。

4

2 回答 2

4

看起来您/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so在系统上的某个位置安装了它(我在 Mac OS X 10.7.5 安装中没有看到它,尽管它可能包含在 10.8 中),并且 dylib 仅构建为 32 位。您可以确认

file /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/readline.so

在您的系统上。您可以尝试强制 lldb 也以 32 位模式运行(分发二进制文件构建为 32-/64- 通用),但我建议您从系统中删除仅 32 位,readline.so除非您确实需要它。

于 2013-03-17T21:48:04.443 回答
0

为了其他人来这个问题寻找快速解决方案 - Linus Oleander 的回答对我有用 - 也就是说,运行

pip install six

冒险猜测为什么会这样,我认为这可以解决 lldb 在安装了“非标准”python 的机器上运行时面临的一些 python 不兼容问题。这也适用于使用 Homebrew 的 llvm 版本。

于 2020-02-24T01:09:20.450 回答