__vdso_time отсутствует в основных утилитах?

Я построил последний glibc, и теперь у меня проблемы с функциями в coreutils, например ls или cat, или что-нибудь еще, как vim.

Моя ошибка

-bash-4.0$ cat
cat: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument

и я построил, glibc без ошибок со следующей конфигурацией

../glibc/configure --prefix=/home/ex/uid377/glibbuilt

В старых версиях, таких как 2.14, запуск утилит приводит к ошибке сегментации.

-bash-4.0$ ./pwd
./pwd: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./pwd)
-bash-4.0$ LD_LIBRARY_PATH=/home/ex/uid377/glibc/lib/:${LD_LIBRARY_PATH}
-bash-4.0$ ./pwd
Segmentation fault (core dumped)

Edit Версия ядра

-bash-4.0$ uname -r
2.6.32.26-175.fc12.x86_64

Ответ 1

Наличие нескольких версий glibc в одной системе возможно, но немного сложно, как объяснено в этом. В частности, это:

LD_LIBRARY_PATH =/дома/ех/uid377/Glibc/Library/: ${LD_LIBRARY_PATH}

ожидается сбой, потому что ваш ld-linux-x86-64.so.2 не будет соответствовать вашему libc.so.6

cat: ошибка при загрузке разделяемых библиотек: __vdso_time: неверный режим для dlopen():...

Непонятно, как вы построили этот cat, но это, скорее всего, такая же проблема: вы выбираете некоторые библиотеки из /lib64, а некоторые из /home/ex/uid377/glibc/lib. Не делай этого. Вы должны связать все программы, которые будут использовать /home/ex/uid377/glibc/lib/libc.so.6 с -Wl,--dynamic-linker=/home/ex/uid377/glibc/lib/ld-linux-x86-64.so.2.

Вы можете отслеживать, какие библиотеки в настоящее время загружаются, запустив:

env LD_DEBUG=files,libs ./cat