5

コンパイル時にlibEXAMPLE.so(so.leフォルダー内)と呼ばれる共有オブジェクトと、EXAMPLE.so(dllフォルダー内)という名前のdllを構築するライブラリがあります。2 つの共有オブジェクトはサイズが非常に似ており、まったく同じものに見えます。インターネットを精査すると、プログラムが dll を使用してシンボル解決を行う方法と、共有オブジェクトを使用して行う方法に違いがある可能性があることが明らかになりました。

これを理解するのを手伝ってくれませんか?

4

2 に答える 2

7

「DLL」は、Windowsが動的ライブラリに名前を付ける方法です

「SO」は、Linuxが動的ライブラリに名前を付けるのが好きな方法です

どちらも同じ目的を持っています: 動的に読み込まれます。

Windows は PE バイナリ形式を使用し、Linux は ELF を使用します。

PE: http://en.wikipedia.org/wiki/Portable_Executable

ELF: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

于 2012-11-08T18:52:49.463 に答える