linux上C库不匹配问题

问题背景

        当在一个linux环境下运行一个现成的工具时,往往会出现错误libc.so.6:version `GLIBC_2.33' not found等。

        这个错误表明你的程序或某个依赖库需要 GLIBC 2.33 版本的 C 标准库,但当前系统的 GLIBC 版本低于此要求。

        一般可以直接运行libc库或者用ldd –version确认下当前的GLIBC版本,会发现当前系统版本是2.28,但是需要运行的工具程序需要2.33和2.34,所以GLIBC库不匹配导致运行失败。

解决方法

       方法一、常规的方法,就是修改工具版本或者升级系统环境,这也是比较正确和安全的方法。但是这个改动较大,比较费时费力,而且也不一定能找到合适匹配的版本和环境,封闭的程序也不会有源码开放来进行编译修改。单独升级系统环境的GLIBC库的话,又会引出系统本身的一堆兼容问题来,严重点都有可能会导致系统崩溃。

       方法二、把工具的依赖库移植一套到系统环境上。

        第一步、这个工具依赖GLIBC 2.33和2.34,找到GLIBC2.34以上的版本,这个可以去官网下。

Downloads | GNU-A Downloads – Arm Developer

Linaro Releases

        第二步、把这些依赖库,包含ld链接器,都拷贝到系统环境中。

        第三步、ld-链接器 --library-path /new/lib/ ./工具程序

        从图里可以看出,修改链接器后,原先不能运行的ls工具,可以运行,且效果和系统自带的ls一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值