在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
相关产品推荐
相关产品推荐

