12

ls最新の glibc をビルドしましたが、coreutilsやなどの関数で問題が発生してい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
4

1 に答える 1

16

この回答で説明されているように、1つのシステムに複数のバージョンのglibcを配置することは可能ですが、少し注意が必要です。特に、これは:

LD_LIBRARY_PATH = / home / ex / uid377 / glibc / lib /:$ {LD_LIBRARY_PATH}

あなたはあなたと一致しないので、クラッシュすることが予想されますld-linux-x86-64.so.2libc.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
于 2012-12-02T23:31:33.307 に答える