编译安装 git 报错 /usr/bin/ld: cannot find -lz

背景:我使用了一台多人公用的服务器,管理员为了大家的环境不互相影响,给每人一个普通用户的权限。所以安装软件的话无权使用 apt-get install 这种方式,只能用源码编译安装。

问题:我在安装 git 的过程中报错,执行 make 命令后,报错

LINK git-daemon
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
Makefile:2516: recipe for target 'git-daemon' failed
make: *** [git-daemon] Error 1

git 是从 github 上下载的 2.30 release 源码。在这之前我还编译安装了 zlib、openssl、autotools 等依赖库。

补充:

  • 网上搜索到的答案多指向 zlib 依赖未安装,要 apt-get install zlib-dev 解决,显然我是无法如此操作的。
  • 另外,如果我在 / 目录下执行 ld -lz 会报错
ld: cannot open output file a.out: Permission denied
  • 而在 ~/ 目录下执行,报错:
ld: cannot find -lz

我对 linux 和 c++ 没有系统的研究和学习,大多是在日常使用的一些经验,所以请大佬们能指点迷津,帮忙解决或分析下问题,不胜感激!先给各位拜年了!

阅读 4.1k
1 个回答

解释清楚这些繁杂的编译参数太费事了。

闲来无事,就顺手帮你静态编译了一下,反正git的依赖也不重,编译也不是难事,利用musl的静态链接无kernel版本依赖的特点进行静态编译,无任何额外依赖,直接就可以运行,你可以试试(我不喜欢百度网盘,不喜欢慢速,也不喜欢让对方也登录,所以就用了奶牛快传):

您有一份文件待查收!即刻点击链接获取文件:https://cowtransfer.com/s/2d9... 或进入 cowtransfer.com 获取,在首页输入取件码:482762(24小时内有效)

文件信息:

$ file git
git: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

$ ./git --version
git version 2.30.0

如果你还不放心,也可以考虑使用linuxbrew: https://docs.brew.sh/Homebrew... Mac环境下的homebrew的Linux移植版本,不需要root权限,对于本地环境无root权限使用这个搭建开发环境是再合适不过了。国内镜像站还都有镜像,就不赘述了,自己照着镜像站的说明配置brew的镜像就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏