Glibc version `GLIBC_2.17' not found问题解决办法

简介: Glibc version `GLIBC_2.17' not found问题解决办法

今天在ARM板上测试一个串口性能测试工具linux-serial-test时,提示 "version `GLIBC_2.17' not found",这个问题还是第一次见,简单查了一下资料,基本确定是应用程序所依赖的glibc环境在目标平台上不支持。可是,之前使用同一交叉编译器编译出来的程序一直没问题。看了一下linux-serial-test的源码,也没有地方声明使用了Glibc-2.17相关的环境。但是,应用程序既然报了这类错误,其肯定依赖了GLIBC-2.17相关的内容,猜想可以通过arm-none-linux-gnueabi-nm工具查看linux-serial-test所包含的所有符号信息,果然,找到了依赖于GLIBC-2.17的函数,如下所示:


arm-none-linux-gnueabi-nm linux-serial-test | grep 2.17
U clock_gettime@@GLIBC_2.17


可以确定,是clock_gettime函数依赖于GLIBC_2.17环境,通过man clock_gettime查看得知如下信息:


Link with -lrt (only for glibc versions before 2.17).


可以确定对于clock_gettime的函数导致的问题,glibc 2.17之前的clock_gettime编译需要-lrt连接属性,回想之前的linux-serial-test的编译方式,如下:


arm-none-linux-gnueabi-gcc linux-serial_test.c -o linux-serial_test


所以,上述编译方式所生成的应用程序依赖于GLIBC_2.17(及以上)环境。重新编译如下:


arm-none-linux-gnueabi-gcc linux-serial_test.c -o linux-serial_test -lrt


再次通过arm-none-linux-gnueabi-nm查看linux-serial_test的符号依赖环境,确定其不再依赖于GLIBC_2.17, 至此,问题解决。


注:本人上述的解决办法,只依赖于本人所遇到的类似问题。但是该问题的本质原因就是应用程序所依赖的GLIBC环境与运行环境中GLIBC版本不匹配导致的,解决方式无非两种:


  1. 修改应用程序编译的选项或配置,使其去掉较高本的环境依赖,类似于本次解决方式;


  1. 重新配置运行环境的glibc,使其适应应用程序的依赖环境。


相关文章
|
7月前
|
Python
错误:/lib64/libc.so.6: version `GLIBC_2.14’ not found 解决办法
错误:/lib64/libc.so.6: version `GLIBC_2.14’ not found 解决办法
421 0
|
7月前
|
Linux
【linux】报错pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: ‘0.23ubuntu1’
【linux】报错pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: ‘0.23ubuntu1’
|
开发工具 git
MAC编译OpenJDK8:clang: error: include path for libstdc++ headers not found(独家解决办法)
MAC编译OpenJDK8:clang: error: include path for libstdc++ headers not found(独家解决办法)
126 0
|
Linux
linux运行protoc出现错误 while loading shared libraries: libprotoc.so.19
linux运行protoc出现错误 while loading shared libraries: libprotoc.so.19
146 0
|
Linux C++
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决方法
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决方法
2168 0
|
编译器 Linux
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found
1312 0
|
C语言
version GLIBC_2.28 not found
version GLIBC_2.28 not found
639 0
编译OpenJDK8:configure: Could not compile and link with freetype. This might be a 32/64-bit mismatch.
编译OpenJDK8:configure: Could not compile and link with freetype. This might be a 32/64-bit mismatch.
104 0
|
Shell
编译OpenJDK8:Could not find freetype! You need to build a 64-bit version of freetype
编译OpenJDK8:Could not find freetype! You need to build a 64-bit version of freetype
87 0
|
关系型数据库 MySQL
解决yum安装mysql时Requires: libc.so.6(GLIBC_2.17)(64bit)
1、yum install mysql-community-server 1 2 3 4 5 6 7 Error: Package: mysql-community-libs-5.7.17-1.
5872 0