Prerequisite – Introduction of Compiler design
Linker is a program in a system which helps to link a object modules of program into a single object file. It performs the process of linking. Linker are also called link editors. Linking is process of collecting and maintaining piece of code and data into a single file. Linker also link a particular module into system library. It takes object modules from assembler as input and forms an executable file as output for loader.
Linking is performed at both compile time, when the source code is translated into machine code and load time, when the program is loaded into memory by the loader. Linking is performed at the last step in compiling a program.
Source code -> compiler -> Assembler -> Object code -> Linker -> Executable file -> Loader
Linking is of two types:
1. Static Linking –
It is performed during the compilation of source program. Linking is performed before execution in static linking. It takes collection of relocatable object file and command-line argument and generate fully linked object file that can be loaded and run.
Static linker perform two major task:
- Symbol resolution – It associates each symbol reference with exactly one symbol definition .Every symbol have predefined task.
- Relocation – It relocate code and data section and modify symbol references to the relocated memory location.
The linker copy all library routines used in the program into executable image. As a result, it require more memory space. As it does not require the presence of library on the system when it is run . so, it is faster and more portable. No failure chance and less error chance.
2. Dynamic linking – Dynamic linking is performed during the run time. This linking is accomplished by placing the name of a shareable library in the executable image. There is more chances of error and failure chances. It require less memory space as multiple program can share a single copy of the library.
Here we can perform code sharing. it means we are using a same object a number of times in the program. Instead of linking same object again and again into the library, each module share information of a object with other module having same object. The shared library needed in the linking is stored in virtual memory to save RAM. In this linking we can also relocate the code for the smooth running of code but all the code is not relocatable.It fixes the address at run time.
- Compiler Design | Introduction of Compiler design
- Compiler Design | Phases of a Compiler
- Compiler Design | Why FIRST and FOLLOW?
- Compiler Design | Bootstrapping
- Compiler Design | Assembler
- Compiler Design | Runtime Environments
- Compiler Design | Ambiguous Grammar
- Compiler Design | FIRST Set in Syntax Analysis
- Compiler Design | Lexical Analysis
- Compiler Design | Loop Optimization
- Compiler Design | Input Buffering
- Compiler Design | Code Optimization
- Labeling Algorithm in Compiler Design
- Compiler Design | Peephole Optimization
- Compiler Design | Classification of top down parsers
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : ArnaMaity