查看glibc版本及解决差异

查看本机glibc版本:

ldd --version

 

----------------------------

在A机器编译的库,给B使用时报:  undefined reference to `expf@GLIBC_2.27'

用上面命令查看后,

A的版本:   ldd (Ubuntu GLIBC 2.27-3ubuntu1.2) 2.27

B的版本:   ldd (Ubuntu GLIBC 2.23-0ubuntu11) 2.23

 

进一步查找资料:

The highest glibc version available in Ubuntu 16.04 (as of July 2019) is 2.23,

but the linker is stating your version is 2.27, which suspiciously corresponds to the one shipped in Ubuntu 18.04

 

用如下命令查看so库的glibc依赖

nm mylib.so | grep GLIBC_2.27

发现如下:

用如下命令查看使用说明

man expf

继续比对新老版本的m库: 

// ubuntu 18.04:
objdump -T /lib/x86_64-linux-gnu/libm-2.27.so | grep "expf"


// ubuntu 16.04:
objdump -T /lib/x86_64-linux-gnu/libm-2.23.so | grep "expf"

 

 

 

------------------------------------------------------------------------------------------

以下为老版回答

------------------------------------------------------------------------------------------

尝试降低GCC版本,

B的GCC为 5.4.0 ,

A为Ubuntu18.04 , gcc为7.3.0 ,支持的最低gcc版本为 5.5.0

尝试安装

查看支持的最低版本
apt-cache policy gcc-5


一、利用软链接的方式进行gcc的降级

1、apt-get安装gcc、g++,默认下载最新版本的,此时ubuntu里的gcc和g++版本均为7.3.0。

sudo apt-get install gcc

sudo apt-get install g++

gcc -v   //查看的版本为7.3.0

g++ -v   //查看的版本为7.3.0

2、apt-get 安装gcc、g++ 5版本,利用apt-get 安装gcc5.4.0版本时显示没有该版本资源,因此改为gcc.5版本。

sudo apt-get install -y gcc-5

sudo apt-get install -y g++-5

gcc-5版本已经下载好,通过下载时输出的信息来看下载的版本实际为gcc 5.5.0-12ubuntu1

3、删除原有gcc链接,重新建立软链接。

cd /usr/bin 

sudo rm -r gcc //移除之前的软链接

sudo ln -sf gcc-5 gcc // 建立gcc-5的软链接 此处尝试使用gcc-5.5.0,但是报错

sudo rm -r g++  //同上

sudo ln -sf g++-5 g++  //同上

4、此时,gcc的版本已经成功的从7.3.0下降到5.5.0版本,利用gcc -v查看版本号发现已经更新为gcc 5.5.0。

上处软链接时使用的时gcc-5,显示的版本为gcc 5.5.0,考虑原因应该时在使用apt-get下载时使用的是gcc-5的原因。

可以用!

 

 

=======================================================================

尝试升级ubuntu16.04的glibc

sudo apt-get install bison

进入glibc-2.33源码:

mkdir build
cd build
../configure --prefix=/opt/
make -j4
make install

其中../configure --prefix=/opt/时报错checking LD_LIBRARY_PATH variable... contains current directory

echo $LD_LIBRARY_PATH
#看出来的是什么,比如是/home/yxp/grpc/opencv/lib:
#则:
export LD_LIBRARY_PATH=/home/yxp/grpc/opencv/lib

开始制作软连接:

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值