The Linux Programming Interface

(nextflipdebug5) #1

FUNDAMENTALS OF


SHARED LIBRARIES


Shared libraries are a technique for placing library functions into a single unit that
can be shared by multiple processes at run time. This technique can save both disk
space and RAM. This chapter covers the fundamentals of shared libraries. The next
chapter covers a number of advanced features of shared libraries.

41.1 Object Libraries


One way of building a program is simply to compile each of its source files to pro-
duce corresponding object files, and then link all of these object files together to
produce the executable program, like so:

$ cc -g -c prog.c mod1.c mod2.c mod3.c
$ cc -g -o prog_nolib prog.o mod1.o mod2.o mod3.o

Linking is actually performed by the separate linker program, ld. When we link
a program using the cc (or gcc) command, the compiler invokes ld behind the
scenes. On Linux, the linker should always be invoked indirectly via gcc, since
gcc ensures that ld is invoked with the correct options and links the program
against the correct library files.

In many cases, however, we may have source files that are used by several programs. As
a first step toward saving ourselves some work, we could compile these source files
Free download pdf