python lib 安装遇到报错clang: error: unknown argument: '-mno-fused-madd'

本文介绍了解决在Mac上使用pip安装Python库时出现的Clang错误的方法。通过修改系统配置文件删除特定编译选项,成功解决了安装过程中遇到的问题。

python lib 安装遇到报错clang: error: unknown argument: ‘-mno-fused-madd’

在安装python lib的时候,可以使用pip工具
pip安装lib有两种方式:
1.pip install pycrypto
2.pip install -r requirement.txt (该txt类似于maven的pom文件)


pip 一般从国外网站拉取,如果想加速拉取,可以设置国内镜像地址:
在当前用户的根目录 mkdir .pip
echo ‘[global]’ > 用户根目录/.pip/pip.conf
echo ‘index-url = https://pypi.mirrors.ustc.edu.cn/simple’ >> 用户根目录/.pip/pip.conf


在使用pip install crypto的过程中遇到clang报如下错误
clang: error: unknown argument: ‘-mno-fused-madd’
遇到这个错误后网上查到有很多方式解决:
1. export ARCHFLAGS=”-Wno-error=unused-command-line-argument-hard-error-in-future” (在我这感觉是坑爹方法)
>
2. 下载最新的clang (还是报错)
>
3. 换GCC export CC=gcc-4.9 会报 error: unrecognized command line option ‘-Wshorten-64-to-32’ (坑爹)
>
4. 在App store升级clang (无效)
>
5. export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments (更坑)


最终解决方法: 找到了适合自己的^_^

sudo sed -i '' -e 's/-mno-fused-madd//g' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py (clang的选项都在那里面了,删掉那个该死的选项)


sudo rm /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.pyc   (把编译文件删掉)

事后说明:(Mac上)
python 在Mac上装完,相关的系统文件放在/System/Library/Frameworks/python.framework/Version下,pip下载lib需要用到这边的系统配置文件去config make 编译某些带C文件的lib,这些lib会被clang编译成.so动态库
当用pip安装新lib后,这些下载的新lib在/Library/Python/2.7/site-packages中


关于py pyc pyo
1. vim xxx.py 于是就有了py文件
python xxx.py可以直接运行py文件
2. python -m xxx xxx.py就有了xxx.pyc文件。它是二进制文件
为了加快模块的加载速度
3. python -O xxx.py 就有了xxx.pyo 是性能优化后的二进制

你遇到的错误信息: ``` Unknown argument: '-mno-unaligned-aarm-linux-gnueabihf-gccess' ``` 说明你在 `.clangd` 的 `CompileFlags.Remove` 中误写了一个 **不存在的编译器参数**: ``` -mno-unaligned-aarm-linux-gnueabihf-gccess ``` 这并不是一个有效的 GCC 或 Clang 编译选项。 --- ### ✅ 正确的编译选项应为: ``` -mno-unaligned-access ``` 这是 ARM 编译器常用的选项,用于控制是否允许非对齐访问(unaligned memory access)。 你误将 `arm-linux-gnueabihf-gcc` 编译器名称的一部分错误地拼接到参数中,导致了这个错误。 --- ### ✅ 修改建议 请将 `.clangd` 中的 `Remove` 部分修改为: ```yaml CompileFlags: Remove: - -fstack-usage - -mno-thumb-interwork - -mword-relocations - -mno-unaligned-access ``` --- ### 🧠 为什么这些标志会出现在 `compile_commands.json` 中? 这些标志通常是交叉编译工具链自动添加的,比如: - `-mno-thumb-interwork`:控制是否启用 Thumb 模式互操作 - `-mword-relocations`:启用字对齐重定位 - `-mno-unaligned-access`:禁止非对齐访问 它们通常出现在 `compile_commands.json` 中,但对 `clangd` 的语义分析帮助不大,甚至可能导致错误,因此可以安全地从 `clangd` 配置中移除。 --- ### ✅ 建议:清理不必要的编译标志 如果你不确定某些标志的作用,可以先从 `Remove` 中移除它们,观察 `clangd` 是否能正常工作。你也可以使用如下命令查看 `compile_commands.json` 中常见的编译标志: ```bash grep -o '-[^ ]*' compile_commands.json | sort | uniq -c ``` 这有助于你识别哪些标志是重复或不必要的。 --- ### ✅ 总结 - 错误原因:拼写错误导致无效参数 `-mno-unaligned-aarm-linux-gnueabihf-gccess` - 正确写法:应为 `-mno-unaligned-access` - 解决方法:修改 `.clangd` 中的 `Remove` 列表,删除错误拼写的参数 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值