安装patchelf无法make(make报错很多)

本文记录了在Ubuntu16环境下安装PatchElf过程中遇到的make报错问题及解决过程,包括更新gcc版本失败后的解决方案,并最终成功安装PatchElf。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ubuntu16安装patchelf无法make(make报错很多)

本例安装patchelf是由于gcc版本低导致的make报错

  1. 情况描述:patchelf安装,make时报错

    image-20211031202910165

    image-20211031202935140

  2. 但是我在另一个kali机器装上了,感觉是gcc版本问题

  3. 查看当前g++版本

    image-20211031203015903

  4. 版本较低,尝试更新gcc(更新2小时)

  5. 更新之后查看gcc版本,gcc版本仍然没有改变

  6. 尝试make

    cd patchelf

    make

    make check

    make install

    make成功

  7. 验证安装成功

    patchelf --version

    一开始显示的版本是0.9,这个版本是不正确的,可能是由于之前一系列操作不小心装上的错误版本

  8. 重新make install,再次检测版本到了0.13

    image-20211101174406710

使用patchelf

patchelf --set-interpreter ~/glibc-all-in-one/libs/2.27-3ubuntu1_amd64/ld-2.27.so ./easy_heap

patchelf --replace-needed libc.so.6 ~/glibc-all-in-one/libs/2.27-3ubuntu1_amd64/libc-2.27.so ./easy_heap

先用 “–set-interpreter” 这个选项来将旧的 ld.so 替换为要加载的 ld.so

再用–replace-needed更换libc

参数解释:(以–replace-needed为例)

  • 第二个参数是程序当前加载的libc路径
  • 第三个参数是将要替换成哪个libc的路径
  • 第四个是你要修改libc的二进制程序的路径

展示更换

  1. 更换前

    image-20211101175639814

  2. 更换后

    • 执行第一条命令

      image-20211101175724559

    • 执行第二条命令

      image-20211101175841720

### Linux 下 Make 3.81 的安装与配置 当在 Linux 环境下尝试编译 Android 4.4 源码时,如果使用的 `make` 版本不是 3.81 或者 3.82,则会收到错误提示:“You are using version X.XX of make. Android can only be built by versions 3.81 and 3.82.” 这是因为较新的 `make` 版本可能引入了一些不兼容的变化[^1]。 为了确保能够成功编译 Android 4.4 源码,建议按照如下方法来安装指定版本的 `make`: #### 卸载现有高版本 Make 由于当前环境中存在更高版本的 `make` (例如 4.x),这可能会干扰到特定版本的需求。因此,在安装旧版之前先卸载现有的较高版本是一个明智的选择。可以使用包管理器命令完成此操作,具体取决于所使用的发行版: 对于基于 Debian/Ubuntu 的系统: ```bash sudo apt-get remove --purge make ``` #### 获取并解压 Make 3.81 源文件 前往 GNU 官方网站下载页面获取对应 tarball 文件,并将其放置于本地工作目录中。接着执行以下指令来进行解压缩处理: ```bash tar -xvf make-3.81.tar.gz cd make-3.81/ ``` #### 配置和构建 Make 工具链 进入刚刚创建的工作空间之后,继续运行下面这些命令以准备编译环境以及实际编译过程本身: ```bash ./configure --prefix=/usr/local/make-3.81 make sudo make install ``` 上述命令中的 `--prefix` 参数指定了新安装程序的具体路径;这样做可以在不影响其他已安装软件的前提下单独保留该版本的 `make` 实用工具。 #### 设置 PATH 变量指向新版 Make 为了让终端默认调用刚安装好的 `make` 而不是系统自带的那个,可以通过修改用户的 shell profile 来调整 `$PATH` 环境变量顺序。编辑 `.bashrc` 或者相应的启动脚本文件(视个人情况而定),加入一行类似于这样的设置: ```bash export PATH=/usr/local/make-3.81/bin:$PATH ``` 保存更改后重新加载配置文件使改动生效: ```bash source ~/.bashrc ``` 现在应该已经完成了针对 Android 4.4 所需的 `make` 3.81 的正确部署。验证是否切换成功的简单方式就是输入 `make -v` 查看当前正在使用的版本号。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值