web-dev-qa-db-ja.com

/lib64/libc.so.6:バージョン `GLIBC_2.14 'が見つかりません

Glibcに関する次のエラーに直面しています。

./simulator: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./simulator)

このエラーに関するいくつかの文書を調べましたが、プログラムsimulatorglibcの上位バージョンでコンパイルされており、実行中のマシンのバージョンが低いことを理解しています。 simulatorは、Ubuntu 14.04マシンでglibc 2.19でコンパイルされました。それでGLIBC_2.14エラーが発生するのはなぜですか? 2.19エラーではないでしょうか?

7
Rishi

では、なぜGLIBC_2.14エラーが発生するのですか?

プログラムはそのバージョンのシンボルに依存しており、それを提供していないシステムで実行しているためです。

2.19エラーではないでしょうか?

番号。

新しいシンボルが導入されると、それに割り当てられたバージョンを取得します。通常、そのバージョンはまだリリースされていない glibcバージョンです。つまり、現在リリースされているバージョンが2.13の場合、新しいシンボルにはバージョン2.14が割り当てられます。

そのバージョンstaysこのシンボルで(同じシンボルの新しい互換性のないバージョンが後で導入されない限り)。

x86_64GLIBC-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
....

つまり、putwcharを呼び出すプログラムをリンクする場合、少なくとも version 2.2.5が必要ですが、私のプログラムもepoll_createを呼び出す場合、 2.3.2の最小バージョンが必要です。

プログラムは、バージョンGLIBC_2.14を持つシンボルを呼び出します。ほとんどの場合、次のようになります。

0000000000091620 g   iD  .text  000000000000003d  GLIBC_2.14  memcpy

あなたのプログラムはnotで知られています。以下のシンボルのどれかを呼び出します(または、必要な別のバージョンを取得します):

$ 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
15

ldd --verbose simulator

与える?

GLIBC2.14が最低限必要だと思います。

システム上のlibc.soのバージョンは何ですか?

2
Laurent G