1.\" 2.\" Copyright (c) 1993 Paul Kranenburg 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 3. All advertising materials mentioning features or use of this software 14.\" must display the following acknowledgement: 15.\" This product includes software developed by Paul Kranenburg. 16.\" 3. The name of the author may not be used to endorse or promote products 17.\" derived from this software without specific prior written permission 18.\" 19.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29.\" 30.\" $Id: ldconfig.8,v 1.13 1997/07/11 14:45:40 jkh Exp $ 31.\" 32.Dd October 3, 1993 33.Dt LDCONFIG 8 34.Os FreeBSD 35.Sh NAME 36.Nm ldconfig 37.Nd configure the shared library cache 38.Sh SYNOPSIS 39.Nm ldconfig 40.Op Fl Rmrsv 41.Op Fl f Ar hints_file 42.Op Ar directory | file Ar ... 43.Sh DESCRIPTION 44.Nm 45is used to prepare a set of 46.Dq hints 47for use by the run-time linker 48.Xr ld.so 1 49to facilitate quick lookup of shared libraries available in multiple 50directories. It scans a set of built-in system directories and any 51.Ar directories 52specified on the command line (in the given order) looking for shared 53libraries and stores the results in the file 54.Pa /var/run/ld.so.hints 55to forestall the overhead that would otherwise result from the 56directory search operations 57.Xr ld.so 1 58would have to perform to load the required shared libraries. 59.Pp 60Files named on the command line are expected to contain directories 61to scan for shared libraries. Each directory's pathname must start on a new 62line. Blank lines and lines starting with the comment character 63.Ql \&# 64are ignored. A standard name for this file is 65.Xr /etc/ld.so.conf. 66.Pp 67The shared libraries so found will be automatically available for loading 68if needed by the program being prepared for execution. This obviates the need 69for storing search paths within the executable. 70.Pp 71The 72.Ev LD_LIBRARY_PATH 73environment variable can be used to override the use of 74directories (or the order thereof) from the cache or to specify additional 75directories where shared libraries might be found. 76.Ev LD_LIBRARY_PATH 77is a 78.Sq \: 79separated list of directory paths which are searched by 80.Xr ld.so 1 81when it needs to load a shared library. It can be viewed as the run-time 82equivalent of the 83.Fl L 84switch of 85.Xr ld 1 . 86.Pp 87.Nm Ldconfig 88is typically run as part of the boot sequence. 89.Pp 90The following options recognized by 91.Nm ldconfig: 92.Bl -tag -width indent 93.It Fl R 94Rescan the previously configured directories. This opens the previous hints 95file and fetches the directory list from the header. Any additional pathnames 96on the command line are also processed. 97.It Fl f Ar hints_file 98Read and/or update the specified hints file, instead of 99.Pa /var/run/ld.so.hints . 100This option is provided primarily for testing. 101.It Fl m 102Instead of replacing the contents of the hints file 103with those found in the directories specified, 104.Dq merge 105in new entries. 106Directories recorded in the hints file by previous runs of 107.Nm 108are also rescanned for new shared libraries. 109.It Fl r 110List the current contents of the hints file 111on the standard output. The hints file is not modified. The list of 112directories stored in the hints file is included. 113.It Fl s 114Do not scan the built-in system directory 115.Pq Dq /usr/lib 116for shared libraries. 117.It Fl v 118Switch on verbose mode. 119.Sh Security 120Special care must be taken when loading shared libraries into the address 121space of 122.Ev set-user-Id 123programs. Whenever such a program is run, 124.Nm ld.so 125will only load shared libraries from the hints 126file. In particular, the 127.Ev LD_LIBRARY_PATH 128is not used to search for libraries. Thus, the role of ldconfig is dual. In 129addition to building a set of hints for quick lookup, it also serves to 130specify the trusted collection of directories from which shared objects can 131be safely loaded. It is presumed that the set of directories specified to 132.Nm ldconfig 133are under control of the system's administrator. 134.Sh FILES 135.Bl -tag -width /var/run/ld.so.hintsxxx -compact 136.It Pa /var/run/ld.so.hints 137Default 138.Dq hints 139file. 140.It Pa /etc/ld.so.conf 141Standard configuration file. 142.Sh SEE ALSO 143.Xr ld 1 , 144.Xr link 5 145.Sh HISTORY 146A 147.Nm 148utility first appeared in SunOS 4.0, it appeared in its current form 149in FreeBSD 1.1. 150