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

如何在M1芯片Mac上使用依赖C库的Perl模块?

M1芯片Mac Perl XS模块架构不匹配问题解决方案

报错核心原因为架构不兼容:在Rosetta(x86_64模拟环境)终端下编译安装的Perl XS模块为x86_64架构,无法被原生M1环境下运行的arm64架构Perl加载。可根据使用场景选择以下任一方案解决:

方案1:固定使用Rosetta环境运行(快速生效,无需重新安装模块)

保持终端「使用Rosetta打开」的勾选状态,所有Perl相关的安装、脚本运行操作都在该Rosetta终端内执行即可,无需修改现有已安装的模块。

方案2:原生arm64环境适配(推荐,可发挥M1芯片性能)

  • 第一步:卸载之前在Rosetta环境下安装的所有报错XS模块,执行命令:
    cpanm --uninstall Text::CSV Text::CSV_XS XML::LibXML MARC::Record MARC::File::XML
    其他出现同类架构报错的模块也可同步加入卸载列表
  • 第二步:右键点击终端应用,取消「使用Rosetta打开」的勾选,重启终端后执行arch命令,确认返回结果为arm64,验证当前为原生架构环境
  • 第三步:安装arm64版本的编译依赖工具链,执行xcode-select --install安装Xcode命令行工具,已安装可跳过。如果使用Homebrew包管理器,需确认使用的是/opt/homebrew路径下的arm64原生版本,避免调用x86_64版本的依赖库
  • 第四步:重新安装对应Perl模块,执行命令:
    cpanm Text::CSV XML::LibXML MARC::Record MARC::File::XML
    此时编译生成的XS模块二进制文件会自动适配arm64架构,可正常加载运行

方案3:多架构兼容配置(适用于需要同时在两种架构下运行Perl脚本的场景)

在shell配置文件(/.zshrc或/.bashrc)中添加以下配置,为不同架构的Perl模块设置独立的存储路径,避免冲突:

if [ "$(arch)" = "arm64" ]; then
    export PERL5LIB="$HOME/perl5/arm64/lib/perl5"
    export PATH="$HOME/perl5/arm64/bin:$PATH"
else
    export PERL5LIB="$HOME/perl5/x86_64/lib/perl5"
    export PATH="$HOME/perl5/x86_64/bin:$PATH"
fi

配置生效后,在不同架构的终端下安装的模块会分别存储到对应路径,不会出现交叉加载的架构不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:51:02