问题描述
我遇到有关glibc的以下错误.
I am facing the following error regarding glibc.
./simulator: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./simulator)
我已经阅读了有关此错误的多个文档,并且我了解到程序simulator
是使用glibc
的更高版本编译的,并且正在运行的计算机具有较低的版本.simulator
是在Ubuntu 14.04计算机上使用glibc 2.19
编译的.那么,为什么会出现GLIBC_2.14
错误?应该不是2.19错误吗?
I have gone through several documents regarding this error and I understand that the program simulator
was compiled with higher version of glibc
and the machine it is running on has a lower version.simulator
was compiled with glibc 2.19
on Ubuntu 14.04 machine. So why am I getting GLIBC_2.14
error ? Shouldn't it be 2.19 error ?
推荐答案
因为您的程序依赖于该版本的符号,并且您正在不提供该符号的系统上运行它.
Because your program depends on a symbol with that version, and you are running it on a system which doesn't provide it.
否.
引入新符号后,它将获得分配给它的版本.通常,该版本是尚未发布的 glibc版本,即,如果当前发布的版本是2.13,则新符号将获得分配给它的版本2.14.
When a new symbol is introduced, it gets a version assigned to it. Usually that version is the not yet released glibc version, i.e. if the current released version is 2.13, the new symbol gets version 2.14 assigned to it.
该版本保持带有该符号的(除非稍后引入相同符号的新的和不兼容的版本).
That version stays with this symbol (unless a new and incompatible version of the same symbol is introduced later).
x86_64
GLIBC-2.19
具有以下版本的符号:
The x86_64
GLIBC-2.19
has the following versioned symbols:
$ objdump -T /lib/x86_64-linux-gnu/libc.so.6 | grep ' g ' | head
0000000000078110 g DF .text 0000000000000124 GLIBC_2.2.5 putwchar
0000000000096a70 g DF .text 0000000000000020 GLIBC_2.2.5 __strspn_c1
000000000010a2b0 g DF .text 0000000000000010 GLIBC_2.4 __gethostname_chk
0000000000096a90 g DF .text 000000000000001a GLIBC_2.2.5 __strspn_c2
0000000000110570 g DF .text 00000000000000a5 GLIBC_2.2.5 setrpcent
00000000000a7ba0 g DF .text 000000000000000a GLIBC_2.2.5 __wcstod_l
0000000000096ab0 g DF .text 0000000000000022 GLIBC_2.2.5 __strspn_c3
00000000000fa950 g DF .text 0000000000000021 GLIBC_2.3.2 epoll_create
000000000010a2c0 g DF .text 0000000000000010 GLIBC_2.4 __getdomainname_chk
00000000000fab60 g DF .text 0000000000000021 GLIBC_2.2.5 klogctl
....
也就是说,如果我链接了一个调用putwchar
的程序,则至少需要 版本2.2.5
,但是如果我的程序也调用了epoll_create
,那么我将需要一个最低版本. 2.3.2
的版本.
That is, if I link a program that calls putwchar
, I will need at minimum version 2.2.5
, but if my program also calls epoll_create
, then I will need a minimum version of 2.3.2
.
您的程序调用了版本为GLIBC_2.14
的某个符号,很可能是这个符号:
Your program calls some symbol with version GLIBC_2.14
, most likely this one:
0000000000091620 g iD .text 000000000000003d GLIBC_2.14 memcpy
已知您的程序不调用以下任何符号(否则您将获得所需的其他版本):
Your program is known to not call any of the symbols below (or you would have gotten a different required version):
$ objdump -T /lib/x86_64-linux-gnu/libc.so.6 | egrep 'GLIBC_2.1[5-9]'
000000000010ab30 g DF .text 0000000000000014 GLIBC_2.16 __ppoll_chk
00000000001087d0 w DF .text 000000000000003e GLIBC_2.17 clock_getcpuclockid
000000000010aaf0 g DF .text 0000000000000017 GLIBC_2.15 __fdelt_warn
000000000010aaf0 g DF .text 0000000000000017 GLIBC_2.15 __fdelt_chk
000000000003c6b0 g DF .text 00000000000000fc GLIBC_2.18 __cxa_thread_atexit_impl
00000000000fb070 g DF .text 0000000000000024 GLIBC_2.15 process_vm_writev
00000000000bd420 g DF .text 00000000000001ba GLIBC_2.15 scandirat
00000000000af970 g DF .text 0000000000000019 GLIBC_2.16 c16rtomb
00000000001088f0 w DF .text 0000000000000090 GLIBC_2.17 clock_nanosleep
00000000000af6e0 g DF .text 0000000000000282 GLIBC_2.16 mbrtoc16
00000000000a3c70 w DF .text 0000000000000230 GLIBC_2.16 mbrtoc32
0000000000000000 g DO *ABS* 0000000000000000 GLIBC_2.15 GLIBC_2.15
0000000000000000 g DO *ABS* 0000000000000000 GLIBC_2.16 GLIBC_2.16
0000000000000000 g DO *ABS* 0000000000000000 GLIBC_2.17 GLIBC_2.17
0000000000000000 g DO *ABS* 0000000000000000 GLIBC_2.18 GLIBC_2.18
00000000000b9f40 g DF .text 0000000000000042 GLIBC_2.16 timespec_get
0000000000083120 w DF .text 0000000000000009 GLIBC_2.16 aligned_alloc
0000000000108810 w DF .text 0000000000000025 GLIBC_2.17 clock_getres
0000000000108880 w DF .text 0000000000000064 GLIBC_2.17 clock_settime
00000000000f8240 w DF .text 0000000000000068 GLIBC_2.16 getauxval
00000000000e44f0 g DF .text 0000000000000015 GLIBC_2.15 posix_spawn
0000000000108840 w DF .text 000000000000003b GLIBC_2.17 clock_gettime
00000000000a3ea0 w DF .text 00000000000001ea GLIBC_2.16 c32rtomb
000000000003c0b0 w DF .text 000000000000001b GLIBC_2.17 secure_getenv
000000000010ab10 g DF .text 0000000000000014 GLIBC_2.16 __poll_chk
00000000000f8240 g DF .text 0000000000000068 GLIBC_2.16 __getauxval
00000000000fb040 g DF .text 0000000000000024 GLIBC_2.15 process_vm_readv
00000000000bd420 w DF .text 00000000000001ba GLIBC_2.15 scandirat64
00000000000e4510 g DF .text 0000000000000015 GLIBC_2.15 posix_spawnp
这篇关于/lib64/libc.so.6:找不到版本"GLIBC_2.14"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!