A library is installed as /usr/lib/x86_64-linux-gnu/libhistory.so.8.1 and its soname is libhistory.so.8. Which name does a dynamically linked program record, so that the dynamic linker can find the library at run time?

LPIC-1 Exam 101-500, objective 102. Linux installation and package management medium

Machine-checked — no person has signed for it. This question was read against the source cited below by an automated pass, which found no contradiction. That is a weaker claim than it sounds: the same kind of process wrote the question, so it can confirm its own mistake.

Treat it as a good draft rather than as settled fact, and read the source below before you rely on it. It is not used in mock exams here — only questions a person has signed for are.

How these questions are written — where each question comes from, what the verification ledger records, and what happens when one is found wrong.

The options

Correct libhistory.so.8

Correct. The soname is what the linker copies into the executable's dynamic section, and ldconfig maintains a symlink of that name pointing at the real file.

Not correct libhistory.so.8.1

Wrong. The full file name carries the minor revision, which changes on every compatible update; recording it would break the program on the next patch release.

Not correct libhistory.so

Wrong. The unversioned name is the linker name, a symlink shipped in the development package for the compile-time linker only; it is not used at run time.

Not correct /usr/lib/x86_64-linux-gnu/libhistory.so.8.1

Wrong. Absolute paths are not baked in, which is what allows the same binary to run on distributions that place libraries in different directories.

Why

Shared libraries carry three names: the real file name with the full version, the soname with the interface version only, and the unversioned linker name. Only the soname is stored in the program, so an update from .8.1 to .8.2 keeps working while a change to .so.9 signals an incompatible interface and installs alongside. ldconfig scans the library directories, creates the soname symlinks and records them in /etc/ld.so.cache, which ld.so consults at start-up.

Where this comes from

Cited
manual page ld.so(8)

Practise this

Reading one question is not practice. The trainer will draw a short set from objective 102 and space the ones you get wrong.

Practise LPIC-1 Exam 101-500

More questions on this objective

All questions on Linux installation and package management

Practise LPIC-1 Exam 101-500