Everyone is familiar with an application or app. We often do one or more of the following – install, run, update, remove. Very simply, an application software is a computer program that is designed to perform a user’s domain specific activity.
But what makes up an application? Here is a simplified look at it under the hood, in the context of a desktop C/C++ application.
Executable
It is necessary for an application to start or launch, and is the entry point for the program. Windows has the .exe
extension but is not typical on GNU/Linux.
Run-time libraries
Often referred to as dynamic libraries, these are run-time dependencies required for the executable to run. They are Dynamic Linked Libraries (.dll
) on Windows and Shared Object (.so
) on GNU/Linux. These can be broadly grouped into 3 categories.
Application libraries
Applications for software design reasons would have partitioned their source code to be built as libraries instead of one monolithic executable.
Third party libraries
Often an application may use third party libraries to leverage their specialization or expertise.
System libraries
Invariably, system libraries are a must for any application as it provides low level functionality. A common dependency is on the C-RunTime (CRT), msvcr*.dll
on Windows and libc.so
on GNU/Linux.
Configuration files
Typically, these files embed data that is required for the application but kept external to it (as opposed to hard coding in the program) for flexibility. They could be text, xml
or other file formats.
Script files
They could be Windows batch (.bat
) files or GNU/Linux shell (.sh
) files.
Distribution
The collection of all these files (and additional information) are included in a Windows Installer
or GNU/Linux Package
referred to as a software distribution.