Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>load-time linking is when symbols in the library, referenced by the executable (or another library) are handled when the executable/library is loaded into memory, by the operating system.</p> <p>Run-time linking is when you use an API provided by the OS or through a library to load a DLL or DSO when you need it, and perform the symbol resolution then. </p> <p>I know more about Linux DSOs than Windows DLL's but the principle should be the same. .NET libraries may differ.</p> <p>In linux, plugin architectures are done this way. Your program will use runtime linking to load up a library and call some functions. Then maybe unload it. It also allows multiple libraries with the same symbols exported to be loaded without clashing. I think DLLs will work in much the same manner.</p> <p>Executables have "blank spaces" in their symbol tables that need filling by some library. These blank-spaces are usually filled in at load-time, or compile time. You can negate the need for "blank spaces" in the symbol table by using runtime linking. </p> <p>Another scenario where runtime linking is useful is for debugging libraries, or selecting from multiple, ABI/API compatible libraries at runtime. I often have a library, say "foo" and one called "foo_unstable" and have a test app that switches between the 2 and does some testing.</p> <p>Under linux, to see what libraries an executable links to at load-time you run the <code>ldd</code> command and get output such as (on /bin/ls):</p> <pre><code>linux-vdso.so.1 =&gt; (0x00007fff139ff000) librt.so.1 =&gt; /lib64/librt.so.1 (0x0000003c4f200000) libselinux.so.1 =&gt; /lib64/libselinux.so.1 (0x0000003c4fa00000) libcap.so.2 =&gt; /lib64/libcap.so.2 (0x0000003c53a00000) libacl.so.1 =&gt; /lib64/libacl.so.1 (0x0000003c58e0000 </code></pre> <p>The operating system will attempt to load the libraries (the .so files) at load-time. It may already have the library in memory.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload