ld – Link an Object File into an Executable Program

The ld command is used to link an object file into an executable program. It is a linker that takes one or more object files generated by a compiler and links them together to form an executable program. The linker performs various tasks such as resolving external references, allocating memory for global and static variables, and creating the final executable file.

Overview

The ld command is typically used in conjunction with a compiler to create an executable program. Here is the basic syntax of the command:

ld [options] file(s)

Here, file(s) refers to one or more object files that need to be linked together. The options are used to specify various linker options such as the output file name, library paths, and linker scripts.

Examples

Here are some examples of how to use the ld command:

  1. To link a single object file, use the following command:
    ld -o output_file input_file.o
    

    This will create an executable file named output_file by linking the object file input_file.o.

  2. To link multiple object files, use the following command:
    ld -o output_file input_file1.o input_file2.o
    

    This will create an executable file named output_file by linking the object files input_file1.o and input_file2.o.

  3. To link object files and libraries, use the following command:
    ld -o output_file input_file.o -L/path/to/lib -lmylib
    

    This will create an executable file named output_file by linking the object file input_file.o and the library libmylib.a located in the /path/to/lib directory.

Options

Here are some of the most commonly used options for the ld command:

Option Description
-o file Set the output file name to file.
-L path Add path to the library search path.
-l library Link against library.
-r Generate a relocatable output file.
-T script Use script as the linker script.
-shared Generate a shared object file.

For a complete list of options, see the ld man page.

Troubleshooting Tips

Here are some tips for troubleshooting common issues with the ld command:

  • If you get an error message saying that a symbol is undefined, it means that the linker cannot find a definition for that symbol. You can fix this by adding the object file that defines the symbol to the linker command.
  • If you get an error message saying that a library cannot be found, it means that the linker cannot find the specified library. You can fix this by adding the library search path using the -L option.
  • If you get an error message saying that a symbol is multiply defined, it means that the linker has found multiple definitions for the same symbol. You can fix this by resolving the multiple definitions or by using the -r option to generate a relocatable output file.

Notes

  • The ld command is a powerful tool for creating executable programs, but it can be complex to use. It is recommended to use a build system such as Make or CMake to automate the build process.
  • The linker script (-T option) is a powerful feature that allows you to customize the linking process. However, it requires a good understanding of the linker and the executable file format.