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

在macOS上交叉编译i386-elf版binutils时遇归档损坏错误

在arm64架构macOS Sequoia 15.0.1上交叉编译i386-elf binutils的编译错误问题

操作步骤

  • 安装依赖:
    brew install gmp mpfr libmpc texinfo
    
  • 下载并解压binutils 2.41:
    mkdir -p ~/src
    cd ~/src
    wget https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.gz
    tar -xzf binutils-2.41.tar.gz
    
  • 创建构建目录:
    mkdir build-binutils
    cd build-binutils
    
  • 设置环境变量:
    export CC=gcc
    export CXX=g++
    export AR=llvm-ar
    
  • 配置binutils:
    ../binutils-2.41/configure \
      --target=i386-elf \
      --prefix=/usr/local/cross \
      --disable-nls \
      --disable-werror
    
  • 执行make时,编译libbfd.la目标出现错误:
    llvm-ar: error: truncated or malformed archive (terminator characters in archive member "\000\000" not the correct "`\n" values for the archive member header for 0     0     644)
    make[4]: *** [libbfd.la] Error 1
    make[3]: *** [all-recursive] Error 1
    make[2]: *** [all] Error 2
    make[1]: *** [all-bfd] Error 2
    make: *** [all] Error 2
    
    此前仅出现源码相关警告。

已尝试的方案

  • 编译不同版本的binutils
  • 使用不同版本的gcc和clang
  • 重新下载依赖及不同版本
  • 设置export AR=ar后编译,出现新错误:
    checking whether gcc supports -Wold-style-definition... ld: multiple errors: archive member '/' not a mach-o file in '/Users/viliamholly/src/binutils-build/libiberty/libiberty.a'; archive member '/' not a mach-o file in '/Users/viliamholly/src/binutils-build/zlib/libz.a'; archive member '/' not a mach-o file in '/Users/viliamholly/src/binutils-build/bfd/.libs/libbfd.a'
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

系统信息

  • macOS Sequoia 15.0.1 (arm64)

补充说明

将CC设为Homebrew版本后,configure阶段出现“g++ failed sanity check”错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:22:16