1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- This file documents the GNU linker LD 4(GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 5version 2.36.1. 6 7Copyright (C) 1991-2021 Free Software Foundation, Inc. 8 9Permission is granted to copy, distribute and/or modify this document 10under the terms of the GNU Free Documentation License, Version 1.3 11or any later version published by the Free Software Foundation; 12with no Invariant Sections, with no Front-Cover Texts, and with no 13Back-Cover Texts. A copy of the license is included in the 14section entitled "GNU Free Documentation License". --> 15<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 16<head> 17<title>LD: libdep Plugin</title> 18 19<meta name="description" content="LD: libdep Plugin"> 20<meta name="keywords" content="LD: libdep Plugin"> 21<meta name="resource-type" content="document"> 22<meta name="distribution" content="global"> 23<meta name="Generator" content="makeinfo"> 24<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 25<link href="index.html#Top" rel="start" title="Top"> 26<link href="LD-Index.html#LD-Index" rel="index" title="LD Index"> 27<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 28<link href="Plugins.html#Plugins" rel="up" title="Plugins"> 29<link href="Machine-Dependent.html#Machine-Dependent" rel="next" title="Machine Dependent"> 30<link href="Plugins.html#Plugins" rel="previous" title="Plugins"> 31<style type="text/css"> 32<!-- 33a.summary-letter {text-decoration: none} 34blockquote.smallquotation {font-size: smaller} 35div.display {margin-left: 3.2em} 36div.example {margin-left: 3.2em} 37div.indentedblock {margin-left: 3.2em} 38div.lisp {margin-left: 3.2em} 39div.smalldisplay {margin-left: 3.2em} 40div.smallexample {margin-left: 3.2em} 41div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 42div.smalllisp {margin-left: 3.2em} 43kbd {font-style:oblique} 44pre.display {font-family: inherit} 45pre.format {font-family: inherit} 46pre.menu-comment {font-family: serif} 47pre.menu-preformatted {font-family: serif} 48pre.smalldisplay {font-family: inherit; font-size: smaller} 49pre.smallexample {font-size: smaller} 50pre.smallformat {font-family: inherit; font-size: smaller} 51pre.smalllisp {font-size: smaller} 52span.nocodebreak {white-space:nowrap} 53span.nolinebreak {white-space:nowrap} 54span.roman {font-family:serif; font-weight:normal} 55span.sansserif {font-family:sans-serif; font-weight:normal} 56ul.no-bullet {list-style: none} 57--> 58</style> 59 60 61</head> 62 63<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 64<a name="libdep-Plugin"></a> 65<div class="header"> 66<p> 67Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="LD-Index.html#LD-Index" title="Index" rel="index">Index</a>]</p> 68</div> 69<hr> 70<a name="Static-Library-Dependencies-Plugin"></a> 71<h3 class="section">4.1 Static Library Dependencies Plugin</h3> 72<a name="index-static-library-dependencies"></a> 73<p>Originally, static libraries were contained in an archive file consisting 74just of a collection of relocatable object files. Later they evolved to 75optionally include a symbol table, to assist in finding the needed objects 76within a library. There their evolution ended, and dynamic libraries 77rose to ascendance. 78</p> 79<p>One useful feature of dynamic libraries was that, more than just collecting 80multiple objects into a single file, they also included a list of their 81dependencies, such that one could specify just the name of a single dynamic 82library at link time, and all of its dependencies would be implicitly 83referenced as well. But static libraries lacked this feature, so if a 84link invocation was switched from using dynamic libraries to static 85libraries, the link command would usually fail unless it was rewritten to 86explicitly list the dependencies of the static library. 87</p> 88<p>The GNU <code>ar</code> utility now supports a <samp>--record-libdeps</samp> option 89to embed dependency lists into static libraries as well, and the <samp>libdep</samp> 90plugin may be used to read this dependency information at link time. The 91dependency information is stored as a single string, carrying <samp>-l</samp> 92and <samp>-L</samp> arguments as they would normally appear in a linker 93command line. As such, the information can be written with any text 94utility and stored into any archive, even if GNU <code>ar</code> is not 95being used to create the archive. The information is stored in an 96archive member named ‘<samp>__.LIBDEP</samp>’. 97</p> 98<p>For example, given a library <samp>libssl.a</samp> that depends on another 99library <samp>libcrypto.a</samp> which may be found in <samp>/usr/local/lib</samp>, 100the ‘<samp>__.LIBDEP</samp>’ member of <samp>libssl.a</samp> would contain 101</p> 102<div class="smallexample"> 103<pre class="smallexample">-L/usr/local/lib -lcrypto 104</pre></div> 105 106<hr> 107<div class="header"> 108<p> 109Up: <a href="Plugins.html#Plugins" accesskey="u" rel="up">Plugins</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="LD-Index.html#LD-Index" title="Index" rel="index">Index</a>]</p> 110</div> 111 112 113 114</body> 115</html> 116