summaryrefslogtreecommitdiff
path: root/static/freebsd/man3/intro.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man3/intro.3')
-rw-r--r--static/freebsd/man3/intro.3384
1 files changed, 384 insertions, 0 deletions
diff --git a/static/freebsd/man3/intro.3 b/static/freebsd/man3/intro.3
new file mode 100644
index 00000000..952183d7
--- /dev/null
+++ b/static/freebsd/man3/intro.3
@@ -0,0 +1,384 @@
+.\" Copyright (c) 1980, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.Dd November 10, 2025
+.Dt INTRO 3
+.Os
+.Sh NAME
+.Nm intro
+.Nd introduction to the C libraries
+.Sh SYNOPSIS
+.Nm cc
+.Op Ar flags
+.Ar
+.Op Fl llibrary
+.Sh DESCRIPTION
+This section provides an overview of the C
+library functions, their error returns and other
+common definitions and concepts.
+Most of these functions are available from the C library,
+.Em libc .
+Other libraries, such as the math library,
+.Em libm ,
+must be indicated at compile time with the
+.Fl l
+option of the compiler.
+.Pp
+The various libraries (followed by the loader flag):
+.Bl -tag -width "libbluetooth"
+.It Em libbluetooth
+.Pq Fl l Ns Ar bluetooth
+The bluetooth library.
+See
+.Xr bluetooth 3 .
+.It Em libc
+.Pq Fl l Ns Ar c
+Standard C library functions.
+When using the C compiler
+.Xr cc 1 ,
+it is not necessary
+to supply the loader flag
+.Fl l Ns Ar c
+for these functions.
+There are several `libraries' or groups of functions included inside of
+.Em libc :
+.Bl -tag -width "XXXXXX"
+.It standard I/O routines
+see
+.Xr stdio 3
+.It database routines
+see
+.Xr db 3
+.It bit string operators
+see
+.Xr bitstring 3
+.It bit and byte utilities
+see
+.Xr stdbit 3
+.It string operators
+see
+.Xr string 3
+and
+.Xr bstring 3
+.It character tests and character operators
+see
+.Xr ctype 3
+.It storage allocation
+see
+.Xr mpool 3
+.It regular-expressions
+see
+.Xr regex 3
+.It remote procedure calls (RPC)
+see
+.Xr rpc 3
+.It time functions
+see
+.Xr time 3
+.It signal handling
+see
+.Xr signal 3
+.El
+.It Em libcalendar
+.Pq Fl l Ns Ar calendar
+The calendar arithmetic library.
+See
+.Xr calendar 3 .
+.It Em libcam
+.Pq Fl l Ns Ar cam
+The common access method user library.
+See
+.Xr cam 3 .
+.It Em libcrypt
+.Pq Fl l Ns Ar crypt
+The crypt library.
+See
+.Xr crypt 3 .
+.It Em libcurses
+.Pq Fl l Ns Ar curses Fl l Ns Ar termcap
+Terminal independent screen management routines
+for two dimensional non-bitmap display terminals.
+See
+.Xr ncurses 3 .
+.It Em libcuse
+.Pq Fl l Ns Ar cuse
+The userland character device library.
+See
+.Xr cuse 3 .
+.It Em libcompat
+.Pq Fl l Ns Ar compat
+Functions which are obsolete but are available for compatibility with
+.Bx 4.3 .
+In particular,
+a number of system call interfaces provided in previous releases of
+.Bx
+have been included for source code compatibility.
+Use of these routines should, for the most part, be avoided.
+The manual page entry for each compatibility routine
+indicates the proper interface to use.
+.It Em libdevinfo
+.Pq Fl l Ns Ar devinfo
+The Device and Resource Information Utility library.
+See
+.Xr devinfo 3 .
+.It Em libdevstat
+.Pq Fl l Ns Ar devstat
+The Device Statistics library.
+See
+.Xr devstat 3 .
+.It Em libdwarf
+.Pq Fl l Ns Ar dwarf
+The DWARF access library.
+See
+.Xr dwarf 3 .
+.It Em libelf
+.Pq Fl l Ns Ar elf
+The ELF access library.
+See
+.Xr elf 3 .
+.It Em libfetch
+.Pq Fl l Ns Ar fetch
+The file transfer library.
+See
+.Xr fetch 3 .
+.It Em libfigpar
+.Pq Fl l Ns Ar figpar
+The configuration file parsing library.
+See
+.Xr figpar 3 .
+.It Em libgpio
+.Pq Fl l Ns Ar gpio
+The general-purpose input output library (GPIO).
+See
+.Xr gpio 3 .
+.It Em libgssapi
+.Pq Fl l Ns Ar gssapi
+The generic security service application programming
+interface.
+See
+.Xr gssapi 3 .
+.It Em libjail
+.Pq Fl l Ns Ar jail
+The jail library.
+See
+.Xr jail 3 .
+.It Em libkvm
+.Pq Fl l Ns Ar kvm
+Functions used to access kernel memory are in this library.
+They can be used
+against both a running system and a crash dump.
+See
+.Xr kvm 3 .
+.It Em libl
+.Pq Fl l Ns Ar l
+The library for
+.Xr lex 1 .
+.It Em libm
+.Pq Fl l Ns Ar m
+The math library.
+See
+.Xr math 3 .
+.It Em libmd
+.Pq Fl l Ns Ar md
+The message digest library.
+See
+.Xr md4 3 ,
+.Xr md5 3 ,
+.Xr sha 3 ,
+.Xr sha256 3 ,
+.Xr sha512 3 ,
+.Xr ripemd 3 ,
+.Xr skein 3 .
+.It Em libmp
+.Pq Fl l Ns Ar mp
+.It Em libpam
+.Pq Fl l Ns Ar pam
+The pluggable authentication module library.
+See
+.Xr pam 3 .
+.It Em libpcap
+.Pq Fl l Ns Ar pcap
+The packet capture library.
+See
+.Xr pcap 3 .
+.It Em libpmc
+.Pq Fl l Ns Ar pmc
+The performance counters library.
+See
+.Xr pmc 3 .
+.It Em libpthread
+.Pq Fl l Ns Ar pthread
+The POSIX threads library.
+See
+.Xr pthread 3 .
+.It Em libstdthreads
+.Pq Fl l Ns Ar stdthreads
+The ISO C11 standard
+.In threads.h
+library.
+See
+.Xr thrd_create 3 .
+.It Em libsysdecode
+.Pq Fl l Ns Ar sysdecode
+The system argument decoding library.
+See
+.Xr sysdecode 3 .
+.It Em libtermcap
+.Pq Fl l Ns Ar termcap
+The terminal independent operation library package.
+See
+.Xr termcap 3 .
+.It Em libusb
+.Pq Fl l Ns Ar usb
+The USB access library.
+See
+.Xr usb 3 .
+.It Em libvgl
+.Pq Fl l Ns Ar vgl
+The video graphics library.
+See
+.Xr vgl 3 .
+.It Em liby
+.Pq Fl l Ns Ar y
+The library for
+.Xr yacc 1 .
+.It Em libz
+.Pq Fl l Ns Ar z
+The general-purpose data compression library.
+See
+.Xr zlib 3 .
+.El
+.Sh FILES
+.Bl -tag -width /usr/lib/libm_p.a -compact
+.It Pa /usr/lib/libc.a
+the C library
+.It Pa /usr/lib/libm.a
+the math library
+.El
+.Sh LIBRARY TYPES
+The system libraries are located in
+.Pa /lib
+and
+.Pa /usr/lib .
+A library has the following naming convention:
+.Bd -unfilled -offset indent
+libc.so.7
+.Ed
+.Pp
+Libraries with an
+.Sq .a
+suffix are static.
+When a program is linked against a static library, all necessary library code
+will be included in the binary.
+This means the binary can be run even when the libraries are unavailable.
+However, it can be inefficient with both disk space and memory usage
+during execution.
+The C compiler,
+.Xr cc 1 ,
+can be instructed to link statically by specifying the
+.Fl static
+flag.
+.Pp
+Libraries with a
+.Sq .so.X
+suffix are dynamic libraries.
+When code is linked dynamically, the library code that the application needs
+is not included in the binary.
+Instead, data structures are added containing information about which dynamic
+libraries to link with.
+When the binary is executed, the run-time linker
+.Xr ld.so 1
+reads these data structures and loads them into the
+process virtual address space.
+.Xr rtld 1
+loads the shared libraries when the program is executed.
+.Pp
+.Sq X
+represents the library version number of the library.
+In the example above, a binary linked with
+.Pa libc.so.8
+would not be usable on a system where only
+.Pa libc.so.7
+is available.
+.Pp
+The advantages of dynamic libraries are that multiple instances of the same
+library can share address space, and the physical size of the binary is
+smaller.
+A namespace per shared library is available via hidden visibility,
+allowing multiple compilation units in a library to share things without
+making them available to other libraries.
+It is possible to load libraries dynamically via
+.Xr dlopen 3 .
+The disadvantage is the added complexity that comes with loading the
+libraries dynamically, and the extra time taken to load the libraries.
+Of course, if the libraries are not available, the binary will be unable
+to execute.
+Calls across shared libraries are also slightly slower and cannot be
+inlined, not even with link time optimization.
+The C compiler,
+.Xr cc 1 ,
+can be instructed to link dynamically by specifying the
+.Fl shared
+flag.
+.Pp
+Shared libraries, as well as static libraries on architectures which produce
+position-independent executables
+.Pq PIEs
+by default, contain position-independent code
+.Pq PIC .
+Normally, compilers produce relocatable code.
+Relocatable code needs to be modified at run-time, depending on where in
+memory it is to be run.
+The C compiler,
+.Xr cc 1 ,
+can be instructed to generate PIC code by specifying the
+.Fl fPIC
+flag.
+.Pp
+Static libraries are generated using the
+.Xr ar 1
+utility.
+The libraries contain an index to the contents of the library,
+stored within the library itself.
+The index lists each symbol defined by a member of a library that is a
+relocatable object file.
+This speeds up linking to the library, and allows routines in the library
+to call each other regardless of their placement within the library.
+.Sh SEE ALSO
+.Xr ar 1 ,
+.Xr cc 1 ,
+.Xr ld 1 ,
+.Xr nm 1 ,
+.Xr intro 2 ,
+.Xr math 3 ,
+.Xr stdio 3 ,
+.Xr make.conf 5 ,
+.Xr src.conf 5
+.Sh HISTORY
+An
+.Nm
+manual appeared in
+.At v7 .