Because static libraries are, well, STATIC. They are LINKed STATICally to the program by the LINKer.
Shared libraries are SHARED. They are linked by the LOADer when LOADed to SHARED libraries in system memory.
a linker is a computer program which takes one or more object files generated by compiler and link them link them to standard library and produce one executable object file. The libraries includes operating system libraries, language specific libraries and ,may be, user created libraries.
Static libraries are compiled into the program itself, shared libraries are compiled separately and referenced by the program. This enables the program to be much smaller, but requires the shared libraries be available to run.
The linker.
linker is a program that combines the object files, to form executable file of our program.
No.That's the job of the compiler. The linker takes the pieces of object code created by the compiler and links all the necessary pieces together to produce a finished product: either an executable program or a code library that can be used in future projects.
C language has a function that contains the object code for predefined functions.for example,the printf() is a library function.if the C program uses any of the library functions, the object code produced for the source code should be combined with the object code of the library functions to generate the final executable code.this process is called linking and it is performed by a 'linker'.
"ld" typically stands for "linker," which is a program that takes compiled object files and libraries, and combines them to create an executable file. It resolves references between different parts of a program and produces the final binary code that can be executed by a computer.
There is no definite term "assembler" in compilation process. It is more like "compiler" and "linker". Assembler usually refers to a compiler of machine language: http://en.wikipedia.org/wiki/Assembly_language So you probably mean difference between compiler and linker? Lets say you have a 3 module program, and it uses a 3rd party library, then the compiler will just compile each of your modules (separately) into binary pieces, which have "unclosed" references to abovementioned library and other 2 modules. After u have 3 binary pieces comes in "linker" it attaches those "unclosed" (or unlinked) links to other modules and library, therefore giving you working program file (.exe file for example). Really hard to say that without a schema or something like that:) Hope this answer helped you.
linker or binder
There is no such thing in the C language, but it is true that operating systems have a component called loader which loads binary program-files (whose source may be written in C language) into the memory and prepares them to the execution.
compiler linker loader macroprocessor assembler
Linking is the process of combining various pieces of code and data together to form a single executable that can be loaded in memory. Linking can be done at compile time, at load time (by loaders) and also at run time (by application programs)