解决Qt软件执行时 “/lib64/libc.so.6: version `GLIBC_2.18‘ not found (required by /lib64/libstdc++.so.6)“的问题

1.问题说明

虚拟机上QT打包的程序放在服务器上运行,由于某些服务器上的glibC版本较老,所以在执行时会出现如下问题:

/lib64/libc.so.6: version `GLIBC_2.18‘ not found (required by /lib64/libstdc++.so.6)

解决方案如下。

2.解决方案

下载并升级glibC即可,若不能下载也可以手动从此处下载:glibc-2.18.tar.gz

curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxf glibc-2.18.tar.gz 
cd glibc-2.18/
mkdir build
cd build/
../configure --prefix=/usr
make -j2
make install

3.安装时可能遇到的错误

3.1配置时提示texinfo

若在升级过程中配置时出现报错:These auxiliary programs are missing or incompatible versions: makeinfo
在这里插入图片描述
在这里插入图片描述
则安装texinfo即可。

#Centos 
yum install -y texinfo

#Ubuntu
sudo apt-get install texinfo

3.2 环境变量错误

如下图提示错误“ LD_LIBRARY_PATH shouldn’t contain the current directory when building glibc. Please change the environment variable”
在这里插入图片描述
此时把LD_LIBRARY_PATH临时设为空可以解决该问题

export LD_LIBRARY_PATH=

3.3 升级更高版本的错误

本文中是升级glibc-2.18,如果不能满足要求,需要安装2.29及以上版本,在安装glibc 2.29时可能会遇到如下问题:

/usr/bin/install: ‘include/limits.h’ and ‘/opt/glibc-2.29/include/limits.h’ are the same file

是因为“解压的glic-2.29.tar.gz源码和编译时定义的目录…/configure --prefix=/opt/glibc-2.29放到了一起”,将编译定义目录与源码目录分开即可

4.自动化升级脚本

执行glibC自动升级脚本,下载地址Linux glibC自动升级脚本

另外如果升级gcc++的话也可以选装gcc++自动升级脚本,下载地址gcc++自动升级脚本

<think> 我们面对的问题是:在运行`./chrome`提示缺少GLIBC_2.18和GLIBC_2.25版本。这通常是因为当前系统的glibc版本过低,而Chrome需要较高版本的glibc支持。 根据引用[1][2][4],我们知道: - glibc是GNU C库,许多程序依赖于它。 - 当系统中没有程序所需的glibc版本,就会报类似`/lib64/libc.so.6: version 'GLIBC_2.18' not found`的错误。 ### 解决思路: 1. **检查当前系统glibc版本**:确认当前系统glibc的版本是否确实低于2.182.25。 2. **升级glibc**:升级glibc到所需版本,但需注意glibc是系统核心库,升级可能导致系统不稳定。因此,通常建议升级整个系统或使用其他方法。 3. **使用静态编译的Chrome**:寻找静态链接了glibc的Chrome版本,这样就不依赖系统glibc。 4. **降级Chrome版本**:安装一个较旧的Chrome版本,它要求的glibc版本较低(如引用[4]中提到CentOS7上安装Chrome124版本)。 5. **在容器中运行**:使用容器技术(如Docker)运行Chrome,容器内使用较新的系统环境。 ### 具体步骤: #### 1. 检查当前glibc版本 在终端运行以下命令: ```bash ldd --version ``` 或者 ```bash /lib64/libc.so.6 ``` 输出中会显示当前glibc版本。例如,如果显示`GLIBC 2.17`,则低于2.182.25。 #### 2. 升级glibc(需谨慎) **警告**:直接升级glibc可能会导致系统不稳定,因为许多程序依赖于它。通常建议通过升级整个系统(如升级到更新的Linux发行版)来获得更新的glibc。 如果仍要尝试升级,可参考引用[5]的方法(但注意,这可能不适用于生产环境): ```bash # 下载glibc-2.18源码并编译安装 curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz tar zxf glibc-2.18.tar.gz cd glibc-2.18 mkdir build cd build ../configure --prefix=/usr make -j2 sudo make install ``` 同样,对于GLIBC_2.25,需要下载glibc-2.25并安装。但请注意,同安装多个版本或覆盖系统glibc可能引起严重问题。 #### 3. 使用静态编译的Chrome(推荐替代方案) 如果存在静态链接的Chrome版本,则无需升级glibc。可以尝试搜索“Chrome static build”或使用其他浏览器(如Firefox的静态版本)。 #### 4. 降级Chrome版本(推荐) 根据引用[4]的经验,可以安装一个较旧的Chrome版本,它不要求较高的glibc。例如,在CentOS7上安装Chrome124版本。 步骤: - 卸载当前Chrome(如果有) - 下载旧版本Chrome安装包(如124版本) - 安装 例如,对于CentOS/RHEL,可以到[谷歌浏览器各个版本](http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/)下载旧版本RPM包。 #### 5. 使用容器运行(推荐) 使用Docker容器运行最新Chrome,避免影响宿主系统。 ```bash # 安装Docker(如果未安装) sudo curl -fsSL https://get.docker.com | bash # 拉取一个带有较新glibc的镜像(如Ubuntu 20.04) sudo docker pull ubuntu:20.04 # 运行Chrome容器(需将Chrome安装包放入容器或使用镜像内安装) # 以下示例为在容器中安装并运行Chrome sudo docker run -it --name chrome_container -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu:20.04 /bin/bash ``` 在容器内部: ```bash apt update apt install wget wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb apt install ./google-chrome-stable_current_amd64.deb google-chrome ``` ### 总结建议: - 对于生产环境,推荐方法4(降级Chrome版本)或方法5(容器运行)。 - 升级glibc风险较高,仅建议在测试环境或可接受风险的场景下进行。 §§相关问题§§ 1. 如何安全地升级Linux系统的glibc2. 如何在Docker容器中运行图形界面应用程序? 3. 如何检查Linux系统中已安装的软件包版本? </think> 要解决运行 `./chrome` 提示缺少 GLIBC_2.18 和 GLIBC_2.25 的问题,请按以下步骤操作: ### 解决方案步骤 1. **确认当前 glibc 版本** 检查系统已安装的 glibc 版本: ```bash ldd --version | head -n1 # 或 strings /lib64/libc.so.6 | grep GLIBC_ ``` 若输出中无 `GLIBC_2.18` 和 `GLIBC_2.25`(如引用[3]),说明版本过低。 2. **升级 glibc(谨慎操作)** **警告:glibc 是系统核心库,升级需谨慎!建议在测试环境操作。** ```bash # 下载并编译 glibc-2.18 curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz tar -zxvf glibc-2.18.tar.gz cd glibc-2.18 mkdir build && cd build ../configure --prefix=/usr make -j$(nproc) sudo make install # 同样方法编译安装 glibc-2.25(引用[5]方法) curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.25.tar.gz tar -zxvf glibc-2.25.tar.gz cd glibc-2.25 mkdir build && cd build ../configure --prefix=/usr make -j$(nproc) sudo make install ``` > 安装后重启系统:`sudo reboot` 3. **替代方案:安装兼容的 Chrome 版本** 若不想升级 glibc(如生产环境),安装旧版 Chrome(引用[4]方案): ```bash # 下载 Chrome 124(兼容 CentOS7/RHEL7) wget http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/google-chrome-stable-124.0.6367.78-1.x86_64.rpm # 安装 sudo yum localinstall google-chrome-stable-124.0.6367.78-1.x86_64.rpm ``` 4. **验证修复** 重新运行 Chrome: ```bash ./chrome --version ``` 成功则显示版本号;若仍报错,检查 glibc: ```bash strings /lib64/libc.so.6 | grep GLIBC_2.1[82]5 # 应包含 GLIBC_2.18 和 GLIBC_2.25 ``` ### 关键注意事项 1. **glibc 升级风险** - 可能导致系统不稳定(引用[1][2][5]) - 建议先在虚拟机测试 - 备份重要数据:`sudo tar -cvpzf /backup.tar.gz /` 2. **兼容性建议** | 系统类型 | 推荐方案 | |----------------|----------------------------| | 生产环境 | 安装旧版 Chrome(如124版本) | | 测试环境 | 升级 glibc | | 容器/Docker | 使用基础镜像 `ubuntu:20.04` | 3. **故障恢复** 若升级后系统异常: ```bash # 从备份还原 sudo tar -xvpzf /backup.tar.gz -C / # 或重装系统库 sudo yum reinstall glibc ``` > 通过升级 glibc 或降低 Chrome 版本,可解决 GLIBC 缺失问题。优先推荐降级 Chrome 方案以保系统稳定(引用[4]经验)[^1][^2][^4][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驯龙高手_追风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值