我构建了最新的glibc,现在我在诸如ls
或cat
之类的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
答案 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