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

macOS Sonoma 14.x下从源码编译Git遇ld链接错误求助

解决macOS下编译Git时ld提示“归档成员'/'不是mach-o文件”的链接错误

问题场景

在macOS Sonoma 14.1.2系统下,从Git官方仓库编译v2.43.0版本(commit 564d0252ca632e0264ed670534a51d18a689ef5d),为避免echo兼容问题指定bash为默认shell,执行make -j all时触发ld链接错误,提示:

归档成员'/'不是mach-o文件

涉及/Users/marslo/tools/git/xdiff/lib.a等多个库文件,编译失败。

编译执行步骤如下:

$ mkdir -p $HOME/tools/git
$ git clone https://github.com/git/git.git $HOME/tools/git
$ cd $HOME/tools/git
# 查看版本
$ git show -s HEAD
commit 564d0252ca632e0264ed670534a51d18a689ef5d (HEAD -> master, tag: v2.43.0, origin/master, origin/HEAD)
...
# 编译
$ make configure
$ ./configure --prefix=/usr/local --with-shell=/usr/local/bin/bash
$ make -j all

系统已安装gcc、autoconf等依赖工具。

解决方案

1. 清理编译残留

彻底清除之前编译生成的所有文件,避免损坏的残留库影响后续编译:

make clean
make distclean

2. 指定GNU ar工具编译

macOS自带的ar工具与Git编译依赖的GNU ar存在兼容性差异,可通过Homebrew安装GNU binutils,再在编译时指定AR变量路径:

# 安装GNU binutils(若未安装)
brew install binutils

# 重新生成配置并编译
make configure
./configure --prefix=/usr/local --with-shell=/usr/local/bin/bash AR=/usr/local/bin/g-ar
make -j all

3. 禁用并行编译(可选)

若多线程编译导致文件生成异常,可去掉-j参数改用单线程编译:

make all

4. 验证结果

编译完成后执行安装并验证版本:

make install
git --version

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:32:47