You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7系统安装PyMOL时遇到glm相关编译错误该如何解决

报错原因
  • 该问题由glm库版本和PyMOL源码的API不匹配导致:
    • CentOS 7官方源提供的glm-devel 0.9.6版本中,没有公开的glm::equal三参数(两个向量+浮点容差)重载实现,该重载是glm 0.9.9及以上版本才新增的特性
    • 你当前编译的PyMOL版本是基于新版glm开发的,源码直接调用了新版的三参数equal函数,旧版glm找不到对应实现,因此抛出匹配失败的报错。
解决方法

你可以根据自身需求任选以下一种方案处理:

方案1:替换系统glm为高版本(推荐)

  1. 先卸载系统自带的旧版glm:
sudo yum remove -y glm-devel
  1. 下载glm 0.9.9或更高版本的源码压缩包,解压后直接将头文件复制到系统头文件目录:
# 假设解压后的目录为glm-0.9.9.8
cd glm-0.9.9.8
sudo cp -r glm /usr/local/include/
  1. 重新编译PyMOL,编译时指定优先读取/usr/local/include下的头文件:
# 在PyMOL的build目录下执行
cmake .. -DCMAKE_INCLUDE_PATH=/usr/local/include
make -j$(nproc)
sudo make install

方案2:使用兼容旧版glm的PyMOL版本

拉取PyMOL 2.3.0及更早版本的源码重新编译即可,该版本的源码未使用新版glm的equal重载,和CentOS7默认的glm 0.9.6版本适配。

方案3:修改PyMOL源码适配旧版glm

打开报错文件layer1/SceneView.cpp,定位到第34行的equal调用代码,将形如:

glm::equal(vec_a, vec_b, epsilon_float)

的代码替换为适配旧版glm的写法:

glm::all(glm::lessThan(glm::abs(vec_a - vec_b), glm::vec3(epsilon_float)))

修改后直接重新执行编译命令即可,无需调整依赖版本。

内容的提问来源于stack exchange,提问作者Yeping Sun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:30:03