libdep-Plugin.html 5.1 KB

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