Google Pixel4手机刷机+Root+逆向环境详细教程
Google Pixel4手机刷机+Root+逆向环境配置详细教程
刷机工具下载
Windows10、Google Pixel4手机当前安卓10系统、adb工具、要刷的谷歌原生的Android11最新刷机包、安装google usb驱动、美版临时twrp-3.6.0_11-0-flame.img和美版永久twrp-installer-3.6.0_11-0-flame.zip、Magisk-v27.0.zip、LSPosed-v1.8.6-6712-zygisk-release.zip
美/欧版判断
Google Pixel 4手机在美版和欧版之间通常有一些区别,其中一个重要的区别就是监管标签。这些标签可通过点击手机的
Settings(设置) → System(系统) → About phone(关于手机) → Regulatory labels(监管标签)来查看,可以帮助区分手机是针对美国市场还是欧洲市场。但要注意,实际的监管标签可能会因地区而异,以下是一些可能的区别:
- FCC标签(美版):美国版本的Pixel 4手机通常会在包装盒上附有美国联邦通信委员会(FCC)的认证标签。这些标签包含FCC ID号码和其他必要的监管信息,用于在美国销售的设备。
- CE标签(欧版):欧洲版本的Pixel 4手机通常会在包装盒上附有CE认证标签。CE标签表示该设备符合欧盟的技术规范和法规,允许其在欧洲市场销售和使用。
- 其他地区的标签:除了FCC和CE标签之外,其他地区的Pixel 4手机可能会有不同的监管标签,具体取决于当地的监管要求。
要确定您的Pixel 4手机是美版还是欧版,您可以检查监管标签上显示的内容即可!此设备监管标签如下图所示:

解锁Bootloader
注意:解锁 Bootloader 重置设备数据,请注意备份。请务必退出你的Google账号和取消指纹识别及锁屏设置。刷机前最好对手机做双清或恢复出厂设置。
安装「科学上网」工具,并成功接入互联网,不然后续的「OEM解锁」选项应该会显示为灰色,无法点击。

选择「设置→系统→关于手机→版本号」,戳「版本号」7次开启 「开发者选项」,开启后会提示[您已处于开发者模式,无需进行此操作。]

返回「上一页」,进入「系统→高级 →开发者选项」开启「USB调试」和「OEM解锁」两个选项。
如果「OEM解锁」选项显示为灰色,请检查网络连接是否正常;如果为灰色且显示OEM 解锁 引导加载程序已解锁可直接跳到后续的判断是否解锁成功的过程即可!

通过数据线将手机连接至电脑,此时,手机端会弹出 USB 调试申请,点击「允许」。

配置相关adb环境变量,网上可以直接搜索配置,完成后可通过命令 adb devices 来验证是否允许adb调试:
C:\Users\Administrator>adb devices
List of devices attached
99xxxxxAZ001RD device
进入Bootloader模式
进入bootloader默认有两种方式:第一种是通过在关机状态下同时按住「按住电源键+音量减键」;第二种是通过「ADB命令」进入。
这里我采用「adb命令」来操作。回到命令提示符窗口,键入 adb reboot bootloader 并回车,手机会立即重启至 Bootloader 模式。
C:\Users\Administrator>adb reboot bootloader
之后,通过 fastboot devices 命令验证 fastboot 是否成功:
C:\Users\Administrator>fastboot devices
99xxxxxAZ001RD fastboot
解锁Bootloader
上一步进入Bootloader页面后,手机界面应该是如下图:

在命令提示符窗口键入 fastboot flashing unlock 并回车,手机进入 Bootloader 解锁界面。
C:\Users\Administrator>fastboot flashing unlock
…
OKAY [ 0.049s]
finished. total time: 0.049s

对于 Pixel 4 机型,要用如下的命令:
fastboot flashing unlock
详情查看:Factory Images for Nexus and Pixel Devices | Google APIs for Android | Google Developers
在 Bootloader 解锁界面中,使用音量键 +/- 来控制光标,选择「Yes」并按下电源键来进行 Bootloader 解锁。
确认完毕后,稍作等待。通过 fastboot reboot 命令重启手机:
C:\Users\Administrator>fastboot reboot
rebooting…finished. total time: 0.050s
稍等片刻之后,你的设备会自动重启。
判断是否解锁成功
当手机重启时出现黑底白字的英文警告页以及屏幕下方出现一把打开的小锁,那 Bootloader 就解锁成功啦!重启手机,出现如下两个界面就算解锁成功:

当然,还有一种更简单的方法,就是再次进入 fastboot 模式,查看:

解锁Bootloader后的两个问题
恢复初始
在解锁 Bootloader 之后,可以看到手机系统已经是完全初始化的状态了,如下图所示:

在进入 「关于手机」 界面后,可以发现之前开启的「开发者选项」也是默认关闭了,需要再次点击7次「版本号」开启。

那么,在执行后面的操作时是否仍需要再次将「OEM解锁」打开呢?答案是:不需要。
然而,因为后面需要用到 adb 命令去操作手机,所以「USB调试」选项还是需要打开的。
关于「OEM锁与bootloader锁的关系」,可以看下面的 疑难解答 。
错误提示
成功解锁Bootloader后,每次手机启动或重启时,都会出现黑底白字的英文警告页,提示 “Your device software can’t be checked for corruption. Please lock the bootloader”。这没有什么可担心的,这是正常的! 这仅仅是提示你 Bootloader 被解锁了,直接忽视即可!
安装驱动及刷机
在工具下载中下载谷歌原生的Android11最新刷机包:flame-rq3a.211001.001-factory-2e1faa99.zip或其它版本你想刷的安卓系统包,将flame-rq3a.211001.001-factory-2e1faa99.zip文件解压到当前文件夹,进入解压后的文件夹并将image-flame-rq3a.211001.001.zip文件再解压到当前文件夹中,最后解压效果,如下图所示:

使用如下命令让手机进入bootloader,运行 flash-all.bat 等待安装
adb reboot bootloaderD:\shuaji\flame-rq3a.211001.001>flash-all.bat
如报异常< waiting for any device >,是USB驱动问题导致,需要安装google usb驱动。
安装USB驱动的步骤:
将手机通过usb连接电脑,打开电脑的设备管理器,找到你的手机,右键,选择更新驱动程序,选择浏览我的电脑以查找驱动程序,点击浏览,选择下载好的谷歌usb驱动解压后的文件夹usb_driver点击确定,点击下一步,最后,关闭设备管理器即可!

这样运行 flash-all.bat 后,手机就开始自动刷机了,过程中会出现下图及重启(不用理会),就等刷机完成,提示Press any key to exit...即可!

开机后需要对手机进行配置及再次开启USB调试,将手机和电脑USB连接等等,确保没问题后,继续往下操作。
刷入Recovery:TWRP及Root
由于Pixel 4系列都采用A/B升级系统,因而可以理解为手机里有2个系统,如果你按照传统刷入Twrp的方法刷入的话,那么你并不会获得一个永久的Twrp。所以需要先刷入一个临时的Twrp,在通过临时的Twrp来刷入永久的Twrp从而来获取Root权限。
下载软件并push到手机
在工具下载中下载临时的Twrp、永久Twrp及Magisk三个文件。首先,前往 TWRP 官网 Devices 下载最新版 TWRP 压缩包(.zip)和临时 TWRP 镜像文件(.img)。我的Pixel4对应选择从这个页面 Download TWRP for flame 下载的 twrp-3.6.0_11-0-flame.img 版本:
twrp-3.6.0_11-0-flame.img(临时twrp)
twrp-installer-3.6.0_11-0-flame.zip(永久twrp)

从github Releases · topjohnwu/Magisk 下载最新的 Magisk 包。 这里我下载的是 27.0 版本:

通过Adb将文件push到手机,连接手机,在手机端弹出「USB调试」点击确定,我将下载的文件都放在了shuaji文件夹下,直接使用命令:
adb push twrp-3.6.0_11-0-flame.img /sdcard/Download/
adb push twrp-installer-3.6.0_11-0-flame.zip /sdcard/Download/
adb push Magisk-v27.0.zip /sdcard/Download/C:\Users\Administrator\Desktop\shuaji>adb push twrp-3.6.0_11-0-flame.img /sdcard/Download/
twrp-3.6.0_11-0-flame.img: 1 file pushed, 0 skipped. 45.0 MB/s (67108864 bytes in 1.423s)C:\Users\Administrator\Desktop\shuaji>adb push twrp-installer-3.6.0_11-0-flame.zip /sdcard/Download/
twrp-installer-3.6.0_11-0-flame.zip: 1 file pushed, 0 skipped. 50.0 MB/s (30531523 bytes in 0.582s)C:\Users\Administrator\Desktop\shuaji>adb push Magisk-v27.0.zip /sdcard/Download/
Magisk-v27.0.zip: 1 file pushed, 0 skipped. 80.7 MB/s (12498796 bytes in 0.148s)
然后cd进入到手机的/sdcard/Download/下,用ls命令查看文件即可!
C:\Users\Administrator\Desktop\shuaji>adb shell
flame:/ $ cd /sdcard/Download/
flame:/sdcard/Download $ ls
Magisk-v27.0.zip twrp-3.6.0_11-0-flame.img twrp-installer-3.6.0_11-0-flame.zip
刷入临时Twrp
进入Bootloader
执行命令 adb reboot bootloader:
C:\Users\Administrator\Desktop\shuaji>adb reboot bootloader
刷入临时Twrp
执行命令 fastboot boot twrp-3.6.0_11-0-flame.img 来启动临时Twrp:
C:\Users\Administrator\Desktop\shuaji>fastboot boot twrp-3.6.0_11-0-flame.img
Sending 'boot.img' (65536 KB) OKAY [ 1.509s]
Booting OKAY [ 6.097s]
Finished. Total time: 7.645s
之后,手机会自动进入到临时的Twrp中,滑动下面的 Swipe to Allow Modifications 滑条,进入Twrp操作页面 (图片是之前刷机的图懒的换了,真实用的版本为:3.6.0_11-0) :

刷入永久Twrp
选择 Install – 找到目录 /sdcard/Download/ – 选择 twrp-installer-3.6.0_11-0-flame.zip 文件 – 弹出安装界面 – 直接滑动底部的滑条 Swipe to confirm Flash 安装:
这里也间接验证了为什么要选择
/sdcard目录:点击Install按钮后,直接进入的就是/sdcard目录,即只能操作这个目录。

等待进度条执行完毕,最后会显示 ...done 的提示。说明这一步执行完成。

刷入Root及面具
上一步安装完成后,我们发现界面中只有两个按钮:Wipe cache/dalvik 和 Reboot System 。后一项肯定不能选,如果选择重启,那还有一个 Magisk-v27.0.zip 文件没有刷入,否则的话还需要走一遍上面的 刷入临时Twrp 的操作;而第一项 清除临时缓存文件,只是我不清楚该文件具体是干什么用的,所以也怕点了之后会出问题。所以可点击顶部的 “蓝色条” 左上角部分,返回到Twrp主界面:

依照上面的安装步骤,继续继续点击Install,安装 Magisk-v27.0.zip 文件。直到界面中提示 ...done 时证明已完成,点击Reboot→System,如下图所示:

安装完成后,点击下面的 Reboot System 按钮,重启系统。不过,这时候发现界面会提示询问是否安装 TWRP App ?这里,千万不要安装。直接点击中间的 Do Not Install 即可。待手机重启进入系统后,可以发现手机APP中多了一个 Magisk 的脸谱Logo图标,如果点击让下载就把Magisk-v27.0.zip 后缀改为.apk直接安装即可。

启动Magisk后提示需要重新安装重新安装才可以使用Magisk(先不用理会),我们点击右上角设置→Zygisk 开启,然后重启手机。再次进入Magisk提示需要重新安装重新安装才可以使用Magisk,点击安装→选择直接安装(推荐)→开始。等待完成后,再次重启手机即可!

安装LSPosed及其它模块
先将LSPosed-v1.8.6-6712-zygisk-release.zip push到手机中, 然后到Magisk的模块界面从本地安装,安装完成后重启手机即可!如下图所示:

至此基本已全部结束!
疑难解答
两个解锁Bootloader的命令
fastboot oem unlock or fastboot flashing unlock
在网上搜索到的一些教程中,有的说是使用 fastboot oem unlock 来解BL,有的说是通过 fastboot flashing unlock 来解BL。
最终在google的官网中,我找到了如下的介绍:
If necessary, unlock the device’s bootloader using one of the following methods:
If you are updating a Nexus or Pixel device that is manufactured in 2015 or later (for example, a Nexus 5X, Nexus 6P, Pixel, Pixel XL, Pixel 2 or Pixel 2 XL device), run this command:
fastboot flashing unlock
If you are updating an older device, run this command:
fastboot oem unlock如有必要,请使用以下方法之一解锁设备的引导加载程序:
如果您要更新 2015 年或之后生产的 Nexus 或 Pixel 设备(例如 Nexus 5X、Nexus 6P、Pixel、Pixel XL、Pixel 2 或 Pixel 2)
XL 设备),运行以下命令:
fastboot flashing unlock
如果您要更新旧设备,请运行以下命令:
fastboot oem unlock
更多介绍,请看: Factory Images for Nexus and Pixel Devices | Google APIs for Android | Google Developers
OEM锁与bootloader锁的关系
OEM锁是限制了bootloader锁,OEM锁系统默认是关闭的,必须在开发者中手动打开。之后 bootloader锁才能进行解锁。
通俗一点的说,OEM锁只跟bootloader锁有关系,和之后的Root操作没有关系。所以当解锁Bootloader后系统配置被重置了,即使 「开发者选项」中的 「OEM解锁」显示为灰色不能操作,也无关紧要了。
参考:关于解锁bootloader的重要性.机友们务必细读,生死问题,请勿忽视! - Pixel | Pixel XL 论坛 - 智友论坛
解锁bootloader的好处
- 最重要是为自己的手机买了份保险,留了条生路.卡死 系统抽风或变砖后,可在bootloader界面下线刷原厂镜像恢复系统。(不解锁的无法刷机救回)
- 作为亲儿子机型,XDA上很多资源,有大量第三方ROM、优化补丁、Recoovery、ROOT
- 解锁bootloader后,不ROOT和修改系统文件,不影响在线OTA升级。
解锁后 开机Google logo下有个小锁和两秒钟的警示语说你的手机已经解了bootloader锁,机友们可以无视之,不影响使用。
参考文章: Google Pixel解锁BL、刷入Twrp及Root折腾小记:https://www.itfanr.cc/2018/10/16/google-pixel-unlock-bl-and-root/
相关文章:
Google Pixel4手机刷机+Root+逆向环境详细教程
Google Pixel4手机刷机Root逆向环境配置详细教程 刷机工具下载 Windows10、Google Pixel4手机当前安卓10系统、adb工具、要刷的谷歌原生的Android11最新刷机包、安装google usb驱动、美版临时twrp-3.6.0_11-0-flame.img和美版永久twrp-installer-3.6.0_11-0-flame.zip、Magis…...
IT项目管理-小题计算【太原理工大学】
1.合同总价问题 问承包商的利润是? 实际利润目标利润(目标成本-实际成本)*卖方分担比例 解:10 000(100 000 - 90 000)* 0.2 12 000(元) 实际成本有时也写作最终成本,问承…...
ARP欺骗使局域网内设备断网
一、实验准备 kali系统:可使用虚拟机软件模拟 kali虚拟机镜像链接:https://www.kali.org/get-kali/#kali-virtual-machines 注意虚拟机网络适配器采用桥接模式 局域网内存在指定断网的设备 二、实验步骤 打开kali系统命令行:ctrlaltt可快…...
Android动画(四):PathMeasure实现路径动画
文章概览 1 PathMeasure概述2 实现路径加载动画3 实现箭头加载动画4 实现操作成功动画 本系列将介绍以下内容: Android动画 1 PathMeasure概述 PathMeasure是一个单独的类,其全部源码如下(请详细研读注释): package…...
HTTP 连接详解
概述 世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的,客户端可以打开一条TCP/IP连接,连接到任何地方的服务器。一旦连接建立,客户端和服务器之间交换的报文就永远不会丢失、受损或失序 TCP(Transmission Control Protocol&…...
练习题(2024/5/12)
1二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4…...
Day50代码随想录动态规划part12:309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
Day50 动态规划part12 股票问题 309.最佳买卖股票时机含冷冻期 leetcode题目链接:309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode) 题意:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算…...
【软考】scrum的步骤
目录 1. 明确产品愿景和需求2. 制定计划和任务列表3. 进行迭代开发(Sprint)4. Sprint评审会议5. Sprint回顾会议6. 重复迭代 1. 明确产品愿景和需求 1.这个过程通常由项目所有者和利益相关者参与,目的是确保整个团队对项目的目标和方向有清晰…...
【C语言】编译与链接
✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:C语言 个人主页:Celias blog~ 目录 引言 一、翻译环境 1.1 编译 1.1.1 预处理 1.1.2 编译 …...
Consul 注册的服务地址变成了 127.0.1.1
问题 我们的服务一直用 Consul 作为注册中心,在 AWS 和 阿里云上使用的时候,没出现过问题。最近把一些服务迁到腾讯云的时候,遇到一个问题:注册的服务地址都是 127.0.1.1。 127.0.1.1 这个地址我们平时遇到的比较少,…...
数字水印 | 离散小波变换 DWT 的 Python 代码实现
🍍原文: 【图像处理】图像离散小波变换及 Python 代码实现 🍍写在前面: 本文在原文的基础上补全了代码。 1 环境准备 ① 安装 p y w t \mathsf{pywt} pywt 包: pip install PyWavelets说明: p y w t \…...
[框架] Unity 公共执行器
本篇我们通过使用单例模式来创建一个公共执行器,使得原本应该在Update()、FixedUpdate()中的指令都可以统一放在一个对象中执行,且可进行添加和移除操作。 1. 创建单例模式改造器:SingletonMono 我们先创建一个单例模式改造器,使…...
二进制转为HEX数组小工具
在使用RA8889时,JPG的解码只能从FLASH的DMA通道获取,那么如果要从远端、或者SD卡等处读取JPG图片出来显示怎么办? RA8889支持JPG图片硬解码,但数据流是从FLASH进行DMA读取的,然后再进行解码。因此这种情况下ÿ…...
数据结构-二叉树-红黑树
一、红黑树的概念 红黑树是一种二叉搜索树,但在每个节点上增加一个存储位表示节点的颜色,可以是Red或者BLACK,通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,…...
C++11 新特性 decltype 说明符
一、typeof与typeid 1.1、typeof 在C11标准之前,GCC已经提供了一个类似功能的运算符 typeof对类型进行推导,但是这毕竟是编译器的实现,不是标准。 int a 0; typeof(a) b 5;1.2、typeid C标准提供了 typeid 运算符,获取的类型…...
java线程局部变量使用方式
线程局部变量是Java中用于存储线程本地信息的变量。这种变量仅在线程的生命周期内存在,并且每个线程都有自己的一份拷贝。换句话说,线程局部变量是线程私有的,其他线程无法访问。 使用场景主要包括: 1. 存储线程状态信息ÿ…...
【隧道篇 / WAN优化】(7.4) ❀ 01. 启动WAN优化 ❀ FortiGate 防火墙
【简介】几乎所有的人都知道,防火墙自带的硬盘是用来保存日志,以方便在出现问题时能找到原因。但是很少的人知道,防火墙自带的硬盘其实还有另一个功能,那就是用于WAN优化。 防火墙自带的硬盘 在FortiGate防火墙A、B、C、D系列&…...
2024数维杯数学建模B题生物质和煤共热解问题的研究原创论文分享
大家好,从昨天肝到现在,终于完成了2024数维杯数学建模挑战赛B题的完整论文啦。 实在精力有限,具体的讲解大家可以去讲解视频: 2024数维杯数学建模B题煤共热解每一问高质量完整代码讲解!_哔哩哔哩_bilibili 2024数维杯…...
中国电子学会(CEIT)2022年12月真题C语言软件编程等级考试三级(含详细解析答案)
中国电子学会(CEIT)考评中心历届真题(含解析答案) C语言软件编程等级考试一级 2022年12月 编程题五道 总分:100分一、鸡兔同笼(20分) 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至…...
今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月12日,星期日
每天一分钟,知晓天下事! 2024年5月12日 星期日 农历四月初五 1、 全国多地已推“一次挂号管三天”,部分医院专家门诊适用。 2、 在梅大高速塌方事故中拦车、救援,黄曼秋等5人拟确认为见义勇为。 3、 深圳新能源车指标申请条件调…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
