Mik*_*ail 11 c linux linker gcc glibc
我内置了最新的glibc,现在我遇到像一些麻烦功能的coreutils ls或cat或其他任何东西一样vim.
我的错误是
-bash-4.0$ cat
cat: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
Run Code Online (Sandbox Code Playgroud)
我用以下配置构建了glibc而没有错误
../glibc/configure --prefix=/home/ex/uid377/glibbuilt
Run Code Online (Sandbox Code Playgroud)
在旧版本(如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)
Run Code Online (Sandbox Code Playgroud)
编辑 内核版本
-bash-4.0$ uname -r
2.6.32.26-175.fc12.x86_64
Run Code Online (Sandbox Code Playgroud)
Emp*_*ian 15
在单个系统上有多个版本的glibc是可能的,但有点棘手,如本回答所述.特别是,这个:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9157 次 |
| 最近记录: |