核心工具中缺少__vdso_time?

时间:2012-12-02 10:35:40

标签: c linux gcc linker glibc

我构建了最新的glibc,现在我在诸如lscat之类的coreutil或其他类似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)

修改 内核版本

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

1 个答案:

答案 0 :(得分:15)

在单个系统上有多个版本的glibc是可能的,但有些棘手,如this回答中所述。特别是:

  

LD_LIBRARY_PATH = /家庭/ EX / uid377 / glibc的/ LIB /:$ {LD_LIBRARY_PATH}

预期会崩溃,因为您的ld-linux-x86-64.so.2与您的libc.so.6不匹配

  

cat:加载共享库时出错:__ docso_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
相关问题