Linuxでライブラリをロードするためにどのシステムコールが使用されますか?

Linuxでライブラリをロードするためにどのシステムコールが使用されますか?

strace出力で実行可能ファイルによって呼び出されたライブラリへのパスはにありますopen()。これは動的にリンクされた実行可能ファイルによって使用されるシステムコールですか?何についてdlopen()open()おそらく、これはプログラムの実行に重要な役割を果たす呼び出しではないようです。

ベストアンサー1

dlopenシステムコールではなくライブラリ関数libdlライブラリ。にはシステムコールのみが表示されますstrace

Linuxや他の多くのプラットフォーム(特に実行可能ファイルにELF形式を使用するプラットフォーム)では、ターゲットdlopenライブラリを使用してopen()それをメモリにマッピングしてこれを実行しますmmap()mmap()ここに実際に重要な部分があります。ライブラリをプロセスのアドレス空間にマージして、CPUがそのコードを実行できるようにします。しかし、これをopen()行うには、まずファイルを入手する必要がありますmmap()

おすすめ記事