我建立了最新的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)
编辑
内核版本
-bash-4.0$uname -r 2.6.32.26-175.fc12.x86_64
解决方法
在单个系统上具有多个版本的glibc是可能的,但稍微棘手一些,如
this答案中所述.特别是这个:
LD_LIBRARY_PATH=/home/ex/uid377/glibc/lib/:${LD_LIBRARY_PATH}
预计会崩溃,因为您的ld-linux-x86-64.so.2将不匹配您的libc.so.6
cat: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): …
不清楚你如何构建这只猫,但最有可能是完全相同的问题:您正在从/ 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