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