背景
使用mac自带的迁移助理
进行换机出现
描述
执行 pip install pycrypto
报告异常 /usr/include/sys/resource.h:197:2: error: unknown type name 'uint64_t' uint64_t ri_user_time;
实际是编译错误,我尝试重装clang 重装homebrew 全部失败。
解决方案
- 备份历史文件
$ sudo mv /usr/local/include /usr/local/include_b
- 新建一个include文件夹
$ sudo mkdir /usr/local/include
- 移动gmp.h为安装llvm做准备
$ sudo cp /usr/local/include_b/gmp.h /usr/local/include/
- 重新安装llvm(如果已安装需要先执行 uninstall操作)
$ brew install llvm
- 恢复历史文件(可选操作)
$ sudo mv /usr/local/include /usr/local/include_old
$ sudo mv /usr/local/include_b /usr/local/include
推论
原始的/usr/local/include
文件夹下有文件影响llvm
安装,即使可以安装成功也会在编译其它文件的时候出错,于是可以新建一个空的include文件提取最少依赖文件安装llvm成功(步骤1-4)。此时已经可以正常使用命令 pip install pycrypto
。 到了这里我在想如果把旧的include文件恢复还能正确安装编译文件吗?答案是肯定的,至于是否执行步骤5看自己选择了,我选择执行并观察后续会有什么问题。