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> &nbsp; [<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 &lsquo;<samp>__.LIBDEP</samp>&rsquo;.
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 &lsquo;<samp>__.LIBDEP</samp>&rsquo; 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> &nbsp; [<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