Qt/Embedded

Ian Lance Taylor ian at airs.com
Mon Nov 20 00:02:33 UTC 2000


   From: David Johnson <david at usermode.org>
   Date: Sat, 18 Nov 2000 10:49:11 -0800

   On Saturday 18 November 2000 04:32 am, kmself at ix.netcom.com wrote:

   > You're aquainted with how a linker works?  It's the linking of object
   > code plus libraries which creates the machine-code executable.  For a
   > dynamically linked program, this step occurs at runtime.  The runtime
   > executable *does* contain, in machine code form (see above WRT
   > derivative works), the referenced portions of the library.

   For a few linkers, maybe. For others no. Though I admit ignorance to the 
   inner workings of linux-ld, it's my understanding that the application code 
   in memory only references the library code. The program's space in memory 
   does not contain the library, only addresses to the library functions. The 
   linker resolves the symbolic names to actual addresses at runtime. I believe 
   the situation is the same for all unices, along with DOS/Windows.

You are describing shared libraries, which on Windows are known as
DLLs.  Not all versions of Unix/Linux support shared libraries (I
believe they were first implemented in SVR3).  Not all libraries are
implemented as shared libraries.  DOS does not support shared
libraries.  Very few embedded systems support shared libraries.

For clarity, the alternative to shared libraries, in which the library
code really is included in the program, can be referred to as archive
libraries.  On most Unix systems, libraries whose names end in ".a"
are archive libraries, while libraries whose names end in ".so", or
".so.VERSION", are shared libraries.

Ian



More information about the License-discuss mailing list