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

配置Planck Likelihood Code时Waf pyembed构建失败求助

解决Planck Likelihood Code在MacOS下Python 2.7嵌入式解释器构建失败问题

从你的config.log信息来看,问题主要集中在三个方面:Python 2.7的python-config不支持--embed参数、编译标志未被正确处理,以及链接阶段找不到-lintl库。下面是针对性的解决步骤:

1. 绕过python-config的--embed参数检测

Python 2.7本身没有--embed这个参数(这是Python 3.x新增的),所以waf的配置脚本在调用python2.7-config --embed时必然失败。你可以通过手动指定嵌入式Python的编译和链接参数来绕过这个检测:

# 先获取Python 2.7的编译和链接参数
PY_CFLAGS=$(python2.7-config --cflags)
PY_LIBS=$(python2.7-config --libs --ldflags)

# 直接传递这些参数给waf的configure命令
./waf configure CC=gcc python=/opt/local/bin/python \
cfitsio_lib=/opt/local/lib cfitsio_include=/opt/local/include \
--lapack_mkl=${MKLROOT} --install_all_deps \
PYEMBED_CFLAGS="$PY_CFLAGS" PYEMBED_LIBS="$PY_LIBS"

2. 过滤未处理的编译标志

你的日志提到-pipe、-Wall、-Wstrict-prototypes这些标志未被处理,可能会干扰waf的配置流程。可以先过滤掉这些标志再传递:

# 过滤不需要的编译标志
PY_CFLAGS=$(python2.7-config --cflags | sed 's/-pipe//g; s/-Wall//g; s/-Wstrict-prototypes//g')
PY_LIBS=$(python2.7-config --libs --ldflags)

# 执行configure
./waf configure CC=gcc python=/opt/local/bin/python \
cfitsio_lib=/opt/local/lib cfitsio_include=/opt/local/include \
--lapack_mkl=${MKLROOT} --install_all_deps \
PYEMBED_CFLAGS="$PY_CFLAGS" PYEMBED_LIBS="$PY_LIBS"

3. 解决ld: library not found for -lintl错误

这个问题是因为链接器找不到intl库,MacOS上的MacPorts Python 2.7通常依赖gettext包提供的intl库:

步骤1:安装gettext

先确保你已经安装了gettext:

sudo port install gettext

步骤2:指定intl库路径

如果安装后仍然报错,手动在链接参数中指定intl库的路径:

PY_LIBS=$(python2.7-config --libs --ldflags | sed 's/-lintl/-L\/opt\/local\/lib -lintl/g')
PY_CFLAGS=$(python2.7-config --cflags | sed 's/-pipe//g; s/-Wall//g; s/-Wstrict-prototypes//g')

./waf configure CC=gcc python=/opt/local/bin/python \
cfitsio_lib=/opt/local/lib cfitsio_include=/opt/local/include \
--lapack_mkl=${MKLROOT} --install_all_deps \
PYEMBED_CFLAGS="$PY_CFLAGS" PYEMBED_LIBS="$PY_LIBS"

备选方案:移除-lintl标志

如果你的Python 2.7实际上并不依赖intl库(部分MacOS Python发行版可能不需要),可以直接移除这个链接标志:

PY_LIBS=$(python2.7-config --libs --ldflags | sed 's/-lintl//g')
PY_CFLAGS=$(python2.7-config --cflags | sed 's/-pipe//g; s/-Wall//g; s/-Wstrict-prototypes//g')

./waf configure CC=gcc python=/opt/local/bin/python \
cfitsio_lib=/opt/local/lib cfitsio_include=/opt/local/include \
--lapack_mkl=${MKLROOT} --install_all_deps \
PYEMBED_CFLAGS="$PY_CFLAGS" PYEMBED_LIBS="$PY_LIBS"

额外注意事项

  • 确保你使用的gcc是真正的GCC编译器,而非MacOS默认的Clang别名。如果需要,可以通过port install gcc安装GCC,并使用gcc-mp-XX(比如gcc-mp-7)作为CC参数。
  • Python 2.7已经停止官方维护,后续可能还会遇到其他兼容性问题,如果项目允许,建议尝试升级到Python 3.x版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:07:45