18

我目前正在尝试安装 pycrypto,当我执行 python setup.py build 时,我收到以下错误:

cc -bundle -undefined dynamic_lookup -arch x86_64 -arch i386 -Wl,-F. build/temp.macosx-10.9-intel-2.7/src/_fastmath.o -lgmp -o build/lib.macosx-10.9-intel-2.7/Crypto/PublicKey/_fastmath.so
ld: illegal text-relocation to '___gmp_binvert_limb_table' in /usr/local/lib/libgmp.a(mp_minv_tab.o) from '___gmpn_divexact_1' in /usr/local/lib/libgmp.a(dive_1.o) for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'cc' failed with exit status 1

我已经尝试过重新安装命令行工具并删除旧的 Xcode 实例。

任何帮助都会非常感谢

4

14 回答 14

35

这对我有用。(如果你在 Xcode 5.1 上应该可以工作)

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install pycrypto
于 2014-03-15T14:23:20.937 回答
12

这为我做到了:

  sudo port install gmp
  sudo ln -s  /opt/local/lib/libgmp.dylib  /usr/lib/libgmp.dylib  
  ARCHFLAGS=-Wno-error CFLAGS=-I/opt/local/include sudo -E pip install pycrypto
于 2014-04-04T16:54:24.567 回答
9

我遇到了同样的问题,并且能够通过安装 gmp 来解决它:

brew install gmp

然后我对我的构建目录进行了核对,并重新开始安装 pycrypto,它成功了。

这也修复了 pycrypto 配置脚本期间的警告消息:

warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath

请参阅相关问题

于 2013-10-30T16:38:21.573 回答
9

在优胜美地:

CC=clang sudo -E pip install pycrypto
于 2015-04-01T05:56:07.953 回答
6

这适用于 Mojave,并且比其他提供的选项更好的 IMO: brew install gmp CFLAGS=-I/usr/local/include \ LDFLAGS=-L/usr/local/Cellar/gmp/6.1.2_2/lib \ pip install pycrypto

于 2018-11-25T18:59:35.540 回答
3

在 El Capitan 我刚刚做了这个......

sudo easy_install livestreamer
sudo easy_install PyCrypto

等等……我现在可以将流保存到我的硬盘中。

于 2016-01-25T18:56:20.070 回答
2

我最近注意到,在升级 OSX 10.9 和 Xcode 5 后,我需要 brew 来安装 gmp以使 pip install pycrypto 再次工作。但随后 gmp 构建开始因非法文本重定位而失败。似乎已知问题 12946导致编译器无法编译位置无关代码:

cc -bundle -undefined dynamic_lookup -Wl,-F。-Wno-error=unused-command-line-argument-hard-error-in-future -Wno-error=unused-command-line-argument-hard-error-in-future build/temp.macosx-10.9-intel- 2.7/src/_fastmath.o -lgmp -o build/lib.macosx-10.9-intel-2.7/Crypto/PublicKey/_fastmath.so

ld:对于架构 x86_64,从 /usr/local/lib/libgmp.a(dive_1.o) 中的 '___gmpn_divexact_1' 到 /usr/local/lib/libgmp.a(mp_minv_tab.o) 中的非法文本重定位

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

错误:命令“cc”失败,退出状态为 1

与射频提供的答案类似,我将 gmp 的共享库符号链接到系统的 /usr/lib 目录中作为解决方法:

sudo ln -s /usr/local/Cellar/gmp/5.1.3/lib/libgmp.dylib /usr/lib/libgmp.dylib

gmp 开发人员应添加--with-pic。

旁白:构建 pycrypto 的警告数量并不能让人感到舒适。

于 2014-05-04T08:28:01.833 回答
1

要安装 PyCrypto,请使用 MacPorts 和以下命令。我在最新版本的 Mac OS X - Yosemite 上对其进行了测试:

Python 2.7 版:

sudo port install py27-crypto

Python 3.4 版:

sudo port install py34-crypto
于 2015-04-12T20:16:04.287 回答
1

对于那些还希望安装 pycrypto 以及加密包的人,这是最终为我工作的命令:

env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptography

于 2014-09-29T04:02:26.640 回答
1

要安装 pycrypto,请运行以下命令

$ CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/Cellar/gmp/6.1.2_2/lib pip install pycrypto
于 2019-12-16T06:38:06.963 回答
1

这是在 Mac/El Capitan 上唯一对我有用的东西:

sudo easy_install -U livestreamer

于 2015-12-02T08:09:34.530 回答
0

我是 python 的新手;我也遇到过这个问题;这让我很烦恼。发布的解决方案都不适合我,所以我暂时存档,libgmp.a然后安装没有错误。这是一种可接受的方法吗?我明白为什么这会奏效......libgmp.lapipCrypto

于 2014-11-12T17:43:40.113 回答
0

安装自制软件(页面底部的安装单行),然后尝试:

$ sudo pip install pycrypto
于 2014-01-31T08:02:19.600 回答
0

如果我没记错的话,pip 和 homebrew 都是包管理器,但是 homebrew 是建立在 ruby​​ 上的,而 pip 是建立在 python 上的。

$ sudo pip install pycrypto

您提到的这个命令需要安装 pip,而不是 homebrew。

这种方式获得点子

于 2014-04-29T00:36:30.937 回答