ローカルlibcを指定すると、グローバルlibcが呼び出されますか?

ローカルlibcを指定すると、グローバルlibcが呼び出されますか?

fooコマンドを実行し、次のように使用する別のlibcを指定した場合:

LD_LIBRARY_PATH=$PATH_TO_MY_CUSTOM_LIBC foo

上記のコマンドを実行するためにグローバルに定義されたlibcが使用されますか?


状況に応じて、libcが物理的に存在し、コンピュータにアクセスできるが何らかの理由で使用できない状況を考えてみましょう。ログインしたシェルで特定のコマンドを実行するには、別のlibcを提供する必要があります。

inlineを指定すると、LD_LIBRARY_PATHグローバルに定義されたlibcを呼び出さずにジョブlibcの場所に設定されます。

新しい環境変数をローカルで定義するためにグローバルに定義されたlibcを同じように呼び出しますか?

ベストアンサー1

いいえ。ダイナミックリンクは/lib/libc.so.6機能という点でlibcの一部ではありません/lib/ld.so(どちらも長年にわたってファイル名とパスがいくつか変更されましたが、本質は同じです)。

はいld.so、動的リンカーも共有ライブラリです。これをロードすることは、ほとんどのLinuxバイナリが関数をmain()呼び出す前に実行する最初の作業です。

ld.solibcとは異なるファイルですが、ソースコードとコンパイルされたバイナリ形式もgnu libcディストリビューションの一部です。

リンクは、ld.soすべてのLinux ELFバイナリに対してgccが提供するハードコードされたコードブロックから来ます。そのパスもバイナリにハードコードされています。必要に応じて変更が可能であっても簡単に変更することはできません。

libc.so.6代替設定で上書きすると、LD_LIBRARY_PATHこのライブラリは注文したlibcを独自のlibcに置き換えますが、まだ一般的なものですld.so

したがって、あなたの質問に対する答えは「はい、しかし…」です。

おすすめ記事