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

如何让macOS上的Ruby C扩展编译为Intel与ARM通用架构?

让Ruby C扩展在macOS生成兼容x86_64和arm64的通用bundle文件

要生成同时兼容Intel和ARM架构的macOS通用二进制文件,你需要调整编译参数,让编译器同时输出两种架构的代码,具体操作如下:

  • 修改extconf.rb文件
    在你的extconf.rb中添加针对macOS平台的编译和链接架构配置,确保编译器同时处理x86_64和arm64:

    if RUBY_PLATFORM.include?('darwin')
      # 添加双架构编译参数
      $CFLAGS += ' -arch x86_64 -arch arm64'
      $LDFLAGS += ' -arch x86_64 -arch arm64'
    end
    
  • 清理旧编译产物并重新编译
    先清理之前生成的单架构文件,再重新执行编译流程:

    make clean
    ruby ./extconf.rb
    make
    
  • 验证结果
    编译完成后,用以下命令检查bundle文件的架构支持:

    lipo -archs xxx.bundle
    

    输出应该包含x86_64和arm64两个架构,说明通用二进制文件生成成功。

注意:如果你的Ruby环境是通过Rosetta运行的x86_64版本,上述配置依然有效——编译器会自动交叉编译生成arm64架构的代码并合并。确保你的Xcode命令行工具是最新版本,以支持双架构编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:21:00