Debian(64ビット)でソースからビルドされたglibcをインストールする方法は?

Debian(64ビット)でソースからビルドされたglibcをインストールする方法は?

これを試みたときにシステムがクラッシュし、すべてのプログラムが直ちにセグメントエラーを引き起こしました。私はこれがld-linux-x86-64.so.2inの新しいバージョンをインストールするためだと思いますが、プログラムをロードするときに新しいバージョンの代わりにin/lib64の古いバージョンを探します。 (明らかにldとlibcは一致する必要がありますか?)libc.so.6/lib/x86_64-linux-gnu/lib64

/lib64上に載せて/etc/ld.so.conf.d/x86_64-linux-gnu.conf走ってみましたldconfig。しかし、何らかの理由でこれは何も解決しませんでした。

答え1

関連性のないものを検索している間、私のインストールが古いlibcを選ぶ理由を誤って見つけました。新しいlibcに古いABIバージョンがあったからです(https://stackoverflow.com/questions/20577638/library-path-order-for-alternate-glibc-dynamic-linker-ld-so)。

これが私がしたことです:

  1. /lib/lib32、、、の内容をバックアップしました/lib64

  2. 検索パスの上に配置/etc/ld.so.conf.d/x86_64-linux-gnu.confされるように編集しました。/lib64

  3. --prefix=/usr --enable-kernel=2.6.26以前のglibcバージョン(2.13)と一致するオプションを使用してglibcの新しいバージョン(2.19)を設定しました。

  4. 新しいglibcを作成しました。問題はあまりなかった。

  5. suルートアクセス権を取得した後make installld-linux-x86-64.so.2libc.so.6

  6. この問題を解決するために実行しましたldconfig(もちろんまだrootとして)。

  7. インストールを再開しました(make install)。一部のコマンドを呼び出すと、エラーが発生しますgcc。私はこれがヘッダーの不一致によるものであることがわかりました。新しいバージョンは、新しいバージョンではなく/usr/include/stdio.h古いバージョンをどこでも使用していました。/usr/include/x86_64-linux-gnu/sys/cdefs.h/usr/include/sys/cdefs.h

  8. だから問題を解決するためにディレクトリを削除し、/usr/include/x86_64-linux-gnu/sysヘッダーも置き換えました/usr/include/sysa.out.hfpu_control.hieee754.h/usr/include/x86_64-linux-gnu/usr/include

  9. インストールを再開しました(make install)。ついに成功しました。

システムを再起動した後、すべてが完璧に動作しました。

私のシステムに64ビットバージョンでインストールされている32ビットバージョンのlibcを更新しようとすると、何が起こるのかわかりませんでした。私はそれが再びすべてをひどく台無しにするだろうと疑います。成功したら、この回答を更新します。

関連情報