Library (computing)

librarylibrariessoftware libraryshared librariessoftware librariesshared libraryprogramming libraryclass libraryshared objectclass libraries
In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development.wikipedia
1,306 Related Articles

Computer program

programprogramscomputer programs
In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development.
A collection of computer programs, libraries, and related data are referred to as software.

Code reuse

software reusereusere-use
These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications.
The software library is a good example of code reuse.

Dynamic linker

dynamic linkingdynamic librarydynamic
In this case the library is called a dynamic library (loaded at runtime).
In computing, a dynamic linker is the part of an operating system that loads and links the shared libraries needed by an executable when it is executed (at "run time"), by copying the content of libraries from persistent storage to RAM, filling jump tables and relocating pointers.

Dynamic loading

dynamically loadeddlopendlopen()
Alternatively, in the middle of execution, an application may explicitly request that a module be loaded.
Dynamic loading is a mechanism by which a computer program can, at run time, load a library (or other binary) into memory, retrieve the addresses of functions and variables contained in the library, execute those functions or access those variables, and unload the library from memory.

Standard library

standard librarieslibrarySML Basis Library
Most compiled languages have a standard library although programmers can also create their own custom libraries.
A standard library in computer programming is the library made available across implementations of a programming language.

Linker (computing)

linkerlinkedlinkers
A dynamic library can be loaded and linked when preparing a program for execution, by the linker.
In computing, a linker or link editor is a computer utility program that takes one or more object files generated by a compiler or an assembler and combines them into a single executable file, library file, or another 'object' file.

System call

syscallcallaccess
For instance, people who want to write a higher level program can use a library to make system calls instead of implementing those system calls over and over again.
Generally, systems provide a library or API that sits between normal programs and the operating system.

Subroutine

functionfunctionssubroutines
These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications.
Subroutines may be defined within programs, or separately in libraries that can be used by many programs.

Java (programming language)

JavaJava programming languageJava language
Simula was the first object-oriented programming language, and its classes were nearly identical to the modern concept as used in Java, C++, and C#.
The original and reference implementation Java compilers, virtual machines, and class libraries were originally released by Sun under proprietary licenses.

Position-independent code

PIEposition independent codePosition-independent executable
Position-independent code avoids references to absolute addresses and therefore does not require relocation.
PIC is commonly used for shared libraries, so that the same library code can be loaded in a location in each program address space where it will not overlap any other uses of memory (for example, other shared libraries).

Relocation (computing)

relocationRelocation tableRelocation (computer science)
A static build may not need any further relocation if virtual memory is used and no address space layout randomization is desired.
A linker usually performs relocation in conjunction with symbol resolution, the process of searching files and libraries to replace symbolic references or names of libraries with actual usable addresses in memory before running a program.

Executable and Linkable Format

ELF86openbinaries
Typical combined executable and shared library formats are ELF and Mach-O (both in Unix) and PE (Windows).
In computing, the Executable and Linkable Format (ELF, formerly named Extensible Linking Format), is a common standard file format for executable files, object code, shared libraries, and core dumps.

Loader (computing)

loaderload timeprogram loader
Relocation is the process of adjusting these references, and is done either by the linker or the loader.
In computer systems a loader is the part of an operating system that is responsible for loading programs and libraries.

COBOL

Picture clauseCOBOL-85Named condition
COBOL also included "primitive capabilities for a library system" in 1959, but Jean Sammet described them as "inadequate library facilities" in retrospect.
They described new versions in 1968, 1969, 1970 and 1973, including changes such as new inter-program communication, debugging and file merging facilities as well as improved string-handling and library inclusion features.

Address space layout randomization

ASLRKASLRaddress space
A static build may not need any further relocation if virtual memory is used and no address space layout randomization is desired.
In order to prevent an attacker from reliably jumping to, for example, a particular exploited function in memory, ASLR randomly arranges the address space positions of key data areas of a process, including the base of the executable and the positions of the stack, heap and libraries.

Mach-O

Typical combined executable and shared library formats are ELF and Mach-O (both in Unix) and PE (Windows).
Mach-O, short for Mach object file format, is a file format for executables, object code, shared libraries, dynamically-loaded code, and core dumps.

Portable Executable

PEImport Address TablePE files
Typical combined executable and shared library formats are ELF and Mach-O (both in Unix) and PE (Windows).
This includes dynamic library references for linking, API export and import tables, resource management data and thread-local storage (TLS) data.

Program lifecycle phase

design timedesign time or run-timelifecycle
The behavior implemented by a library can be connected to the invoking program at different program lifecycle phases.
It is very common for programs to use functions implemented by external libraries, all of which must be properly linked together.

Runtime (program lifecycle phase)

run timerun-timeruntime
In this case the library is called a dynamic library (loaded at runtime).
When a program is to be executed, a loader first performs the necessary memory setup and links the program with any dynamically linked libraries it needs, and then the execution begins starting from the program's entry point.

C Sharp (programming language)

C#Visual C#C# programming language
Simula was the first object-oriented programming language, and its classes were nearly identical to the modern concept as used in Java, C++, and C#.
The suffix has also been used for libraries, such as Gtk# (a .NET wrapper for GTK+ and other GNOME libraries) and Cocoa# (a wrapper for Cocoa).

OpenStep

OPENSTEP EnterpriseOPENSTEP/MachOPENSTEP for Mach
For instance, on the OpenStep system, applications were often only a few hundred kilobytes in size and loaded quickly; the majority of their code was located in libraries that had already been loaded for other purposes by the operating system.
The software libraries that shipped with OPENSTEP are a superset of the original OpenStep specification, including many features from the original NeXTSTEP.

DLL Hell

runtime DLLs
Such a scenario is known as DLL hell, named after the Windows and OS/2 DLL file. Applications written for the .NET Framework framework (since 2002), also check the Global Assembly Cache as the primary store of shared dll files to remove the issue of DLL hell.
DLLs are Microsoft's implementation of shared libraries.

Prelink

PrebindingPrelinking
This optimization is known as prebinding in macOS and prelinking in Linux.
Most computer programs consist of code that requires external shared libraries to execute.

.NET Framework

.NETMicrosoft .NET FrameworkMicrosoft .NET
Applications written for the .NET Framework framework (since 2002), also check the Global Assembly Cache as the primary store of shared dll files to remove the issue of DLL hell.
It includes a large class library named as Framework Class Library (FCL) and provides language interoperability (each language can use code written in other languages) across several programming languages.

Dependency hell

dependenciesdependencies are too rigiddependency issues
This is called dependency hell, existing on many platforms.