In this chapter, we explored the creation and use of program libraries. Traditional static libraries were discussed first, followed by shared libraries and finally dynamically loaded libraries. Source code was also investigated to demonstrate the methods for creating libraries using the ar command as well as using libraries with gcc . Finally, a number of library-based utilities were discussed, including ldd , objdump , nm , size , and ranlib .