/lib64/libc.so.6:未找到版本“GLIBC_2.14”
/lib64/libc.so.6: version `GLIBC_2.14' not found
我遇到了以下关于 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 错误吗?
什么
ldd --verbose simulator
给出 ?
我会说 GLIBC2.14 是最低要求。
您系统上的 libc.so 是什么版本?
So why am I getting GLIBC_2.14 error?
因为您的程序依赖于该版本的符号,而您 运行 它在一个不提供它的系统上。
Shouldn't it be 2.19 error?
没有
引入新符号时,会为其分配一个版本。通常该版本是 尚未发布 glibc 版本,即如果当前发布的版本是 2.13,则新符号将分配给它的版本 2.14。
该版本 与此符号保持 (除非稍后引入相同符号的新的不兼容版本)。
x86_64
GLIBC-2.19
具有以下版本符号:
$ 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
....
也就是说,如果我 link 一个调用 putwchar
的程序,我至少需要 版本 2.2.5
,但是如果我的程序还调用 epoll_create
,那么我将需要 2.3.2
.
的最低版本
您的程序调用了一些版本为 GLIBC_2.14
的符号,很可能是这个版本:
0000000000091620 g iD .text 000000000000003d GLIBC_2.14 memcpy
已知您的程序不会调用以下任何符号(否则您会得到不同的所需版本):
$ 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
如果一切都失败了,只需下载较早版本的 BLAST。这些错误似乎出现在较新的版本中。
安装 ncbi-blast-2.8.1
而不是 ncbi-blast-2.9.0
,为我解决了这个问题。
在 ubuntu 中使用 pyinstaller 生成构建时,我在 Debian 中遇到了同样的错误。
我通过在 centos7 中生成构建解决了这个错误。
构建工作正常。
有同样的问题,re-installed lsscsi rpm 包。成功了。
------------------
[root@host ~]# lsscsi
lsscsi: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by lsscsi)
-------------------
[root@c3-dl380g9-481 Packages]# ls | grep lsscsi
lsscsi-0.23-3.el6.x86_64.rpm
[root@c3-dl380g9-481 Packages]# rpm -ivh lsscsi-0.23-3.el6.x86_64.rpm
warning: lsscsi-0.23-3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:lsscsi ########################################### [100%]
[root@c3-dl380g9-481 Packages]# lsscsi
[0:0:0:0] disk HP LOGICAL VOLUME 7.00 /dev/sda
[0:3:0:0] storage HP P440ar 7.00 -
[6:0:0:0] cd/dvd hp CDDVDW SU-208GB JM00 /dev/sr0
.
。
.
我遇到了以下关于 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 错误吗?
什么
ldd --verbose simulator
给出 ?
我会说 GLIBC2.14 是最低要求。
您系统上的 libc.so 是什么版本?
So why am I getting GLIBC_2.14 error?
因为您的程序依赖于该版本的符号,而您 运行 它在一个不提供它的系统上。
Shouldn't it be 2.19 error?
没有
引入新符号时,会为其分配一个版本。通常该版本是 尚未发布 glibc 版本,即如果当前发布的版本是 2.13,则新符号将分配给它的版本 2.14。
该版本 与此符号保持 (除非稍后引入相同符号的新的不兼容版本)。
x86_64
GLIBC-2.19
具有以下版本符号:
$ 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
....
也就是说,如果我 link 一个调用 putwchar
的程序,我至少需要 版本 2.2.5
,但是如果我的程序还调用 epoll_create
,那么我将需要 2.3.2
.
您的程序调用了一些版本为 GLIBC_2.14
的符号,很可能是这个版本:
0000000000091620 g iD .text 000000000000003d GLIBC_2.14 memcpy
已知您的程序不会调用以下任何符号(否则您会得到不同的所需版本):
$ 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
如果一切都失败了,只需下载较早版本的 BLAST。这些错误似乎出现在较新的版本中。
安装 ncbi-blast-2.8.1
而不是 ncbi-blast-2.9.0
,为我解决了这个问题。
在 ubuntu 中使用 pyinstaller 生成构建时,我在 Debian 中遇到了同样的错误。 我通过在 centos7 中生成构建解决了这个错误。 构建工作正常。
有同样的问题,re-installed lsscsi rpm 包。成功了。
------------------
[root@host ~]# lsscsi
lsscsi: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by lsscsi)
-------------------
[root@c3-dl380g9-481 Packages]# ls | grep lsscsi
lsscsi-0.23-3.el6.x86_64.rpm
[root@c3-dl380g9-481 Packages]# rpm -ivh lsscsi-0.23-3.el6.x86_64.rpm
warning: lsscsi-0.23-3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:lsscsi ########################################### [100%]
[root@c3-dl380g9-481 Packages]# lsscsi
[0:0:0:0] disk HP LOGICAL VOLUME 7.00 /dev/sda
[0:3:0:0] storage HP P440ar 7.00 -
[6:0:0:0] cd/dvd hp CDDVDW SU-208GB JM00 /dev/sr0
.
。 .