【问题标题】:__vdso_time missing from core utils?核心实用程序中缺少 __vdso_time?
【发布时间】:2012-11-20 01:05:39
【问题描述】:

我构建了最新的 glibc,但现在我在使用诸如 lscatvim 之类的任何其他函数时遇到了一些问题。

我的错误是

-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

【问题讨论】:

  • 您使用的是哪个内核版本?什么分布?以及为什么需要手动构建 glibc?
  • @NikolaiNFetissov 登录节点是运行 2.6 内核的 Fedora 12。

标签: c linux gcc linker glibc


【解决方案1】:

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

LD_LIBRARY_PATH=/home/ex/uid377/glibc/lib/:${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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多