The `ldd` (List Dynamic Dependencies) command on Linux is a crucial tool used for examining the shared libraries required by an executable or shared object file. By running `ldd` followed by the name of the executable or library, users can see which dynamic libraries are needed and where the system expects to find them. This command helps in troubleshooting issues related to missing or incompatible libraries, ensuring that all dependencies are correctly resolved. It displays the full paths to the libraries or indicates if any are missing, making it an essential utility for system administrators and developers managing software dependencies on Linux systems.

All the examples mentioned here have been tested on Ubuntu Linux, but the command works exactly the same way on other Distributions.

Linux ldd command

As already mentioned in the beginning, the ldd command prints shared object dependencies. Following is the command’s syntax:

ldd [option]... file...

And here’s how the tool’s man page explains it:

ldd prints the shared objects (shared libraries) required by each program or shared object 

specified on the command line.

The following Q&A-styled examples should give you a better idea on how ldd works.

Q1. How to use the ldd command?

Basic usage of ldd is fairly simple – just run the ‘ldd’ command along with an executable or shared object file name as input.

ldd [object-name]

For example:

ldd test

<img alt="How to use ldd" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/ldd-basic.png66aba0eb8c5be.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="52" loading="lazy" src="data:image/svg xml,” width=”500″>

So you can see all shared library dependencies have been produced in output.

Q2. How to make ldd produce detailed information in output?

If you want ldd to produce detailed information, including symbol versioning data, you can use the -v  command line option. For example, the command

ldd -v test

produced the following in output when the -v command-line option was used:

<img alt="How to make ldd produce detailed information in output" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/ldd-v-option.png66aba0ebcc4c6.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="124" loading="lazy" src="data:image/svg xml,” width=”500″>

Q3. How to make ldd produce unused direct dependencies?

For this info, use the -u command-line option. Here’s an example:

ldd -u test

<img alt="How to make ldd produce unused direct dependencies" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/ldd-u-test.png66aba0ec0ae83.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="55" loading="lazy" src="data:image/svg xml,” width=”352″>

Q4. How make ldd perform relocations?

There are a couple of command line options you can use here: -d and -r. While the former tells ldd to perform data relocations, the latter makes ldd perform relocations for both data objects and functions. In both cases, the tool reports missing ELF objects (if any).

ldd -d
ldd -r

Q5. How get help on ldd?

The –help command line option makes ldd produce useful usage-related information for the tool.

ldd --help

<img alt="How get help on ldd" data-ezsrc="https://kirelos.com/wp-content/uploads/2024/08/echo/ldd-help-option.png66aba0ec48ece.jpg" ezimgfmt="rs rscb10 src ng ngcb9" height="177" loading="lazy" src="data:image/svg xml,” width=”550″>

Conclusion

Ldd doesn’t fall into the category where tools like cd, rm, and mkdir fit in. That’s because it’s built for a specific purpose and does what it promises. The utility offers limited command line options; we’ve covered most of them here. To know more, head to ldd’s man page.