Forrest logo
back to the ld tool

ld:tldr:eb6e0

ld: Dynamically link an x86_64 program to glibc (file paths change depending on the system).
$ ld --output ${path-to-output_executable} --dynamic-linker /lib/ld-linux-x86-64.so.2 /lib/crt1.o /lib/crti.o -lc ${filename-o} /lib/crtn.o
try on your machine

This command is written in the terminal to link and create an executable file from object files. Let's break it down step by step:

  • ld is the linker command, used to link object files and libraries.
  • --output ${path-to-output_executable} specifies the output executable's path and name. ${path-to-output_executable} should be replaced with the desired location and name.
  • --dynamic-linker /lib/ld-linux-x86-64.so.2 sets the dynamic linker that will be used during execution.
  • /lib/crt1.o and /lib/crti.o are object files containing some startup code and initialization routines necessary for an executable.
  • -lc specifies the C library that should be linked (libc). This is essential for any program written in C.
  • ${filename-o} should be replaced with the object file(s) or library file(s) to be linked. Multiple files can be specified.
  • /lib/crtn.o is another object file that contains routines to be executed when the program exits.

So, when you run this command, ld (the linker) will combine the object files (crt1.o, crti.o, ${filename-o}, crtn.o) as well as the C library (libc), and create an executable file at ${path-to-output_executable}.

This explanation was created by an AI. In most cases those are correct. But please always be careful and never run a command you are not sure if it is safe.
back to the ld tool