ここに私が持っているシナリオがあります:chrootはどのように動的リンクに影響しますか?
私はdebootstrap ubuntu maverick(64-bit)環境を作成しました。私はそれを私のubuntu(64ビット)明快なシステムの/env/mav/
に置いた。私はchroot
を/env/mav
に入れることができ、完璧なシステムを完全に利用することができます。
私はchrooted環境の外でlucidプログラムをうまく使うことさえできます。つまり、/env/mav/bin/ls
が実行されます。
しかし、私はLD_LIBRARY_PATH
を変更した場合であることを気づい/env/mav/lib
[1] [2]私は即座にクラッシュします実行
すべての単一のプログラム(明快と異端の両方)。 (例:lsはsegfaultになります)。 kern.logショー:はっきり/env/mav
にI chroot
場合
segfault at 7fece284aa18 ip 00007fece284aa18 sp 00007fff32028158 error 15
しかし、すべてのプログラムが正常に実行されています。そして、すべての図書館が刑務所から読み込まれているだけではない(/env/mav
)/lib
?この場合、chroot
と変更するLD_LIBRARY_PATH
の違いは何ですか? I場合
はさらに、:
mount -B /env /env/mav/env
、その後chroot /env
、その後/env/mav/lib
するLD_LIBRARY_PATH
を設定し、すべてがまだ正常に動作します。
私は内部的に何が起こっているのか迷っています。どこかに格納されている内部構造がありますか? chrootは何か魔法をしますか?
[1]ユビキタス環境のプログラムを、正確に拘束された動的ライブラリに変換することです。
[2]これは、ほんの一例です。実際には/usr/lib
などがすべて含まれています。まじめな環境の/ libの "毒"のすべてを含む;他の独立したライブラリディレクトリを使用しても問題はありません。
Linuxリンキングシステムの仕組みについての説明をありがとう。完璧に働いた。 – UsAaR33
libpthread.soをlibc.so(LD_DEBUGを使用)にリンクしてクラッシュが発生しています。 ld.so --listによって来る将来の人々に注意するには、異なるリンカーでlddを行うことができます。 – UsAaR33