The system linker converts native object code into a callable shared object, system executable or shared library file.
The linker can take source code, intermediate code or native object code as input. It can also take C or C++ source code as input for certain executable file types, as shown in the following diagram.