GNU is a Unix-like operating system that was developed by the Free Software Foundation (FSF). It is a collection of free software tools and libraries that are used to create a complete operating system. The GNU Project began in 1984 with the goal of creating a free and open-source alternative to proprietary operating systems like Unix.
The Linux kernel is a free and open-source kernel that is used in many GNU/Linux distributions. The kernel is responsible for managing the hardware and software resources of the computer. It also provides a basic set of services that are necessary for other software to run.
A Linux distribution is a collection of software that is based on the Linux kernel. It typically includes the GNU operating system, as well as a variety of other software packages, such as a desktop environment, a web browser, and an office suite.
Here are some of the things that a Linux distribution typically includes:
- The Linux kernel
- The GNU operating system
- A desktop environment
- A web browser
- An office suite
- Other software packages, such as programming languages, development tools, and media players
Well Known GNU Software Packages
| Software Package | Description |
|---|---|
| Compiler Collection (GCC) | A collection of compilers for many programming languages, including C, C++, Objective-C, Fortran, Ada, and Go. GCC is one of the most widely used compilers in the world, and it is used to compile the Linux kernel and many other GNU/Linux software packages. |
| C Library (glibc) | A standard C library that provides basic functions for operating systems, such as file I/O, memory management, and string manipulation. glibc is used by most GNU/Linux distributions, and it is also used by some other operating systems, such as FreeBSD and Solaris. |
| Core Utilities (coreutils) | A set of basic Unix utilities, such aschgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, sync, touch, vdir, basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostname, id, logname, nice, nohup, pathchk, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami, yes, cut, join, nl, split, tail, wc, and so on. coreutils are used to perform common tasks on the command line, such as listing files, copying files, moving files, removing files, and viewing files. |
| cpio | Copies file archives to and from disk or to another part of the file system. |
| Debugger (GDB) | A powerful debugger that can be used to debug C, C++, and Objective-C programs. GDB can be used to step through a program line by line, to examine the values of variables, and to set breakpoints. |
| Binary Utilities (binutils) | A set of tools for manipulating binary files, such as ar, as, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings, and strip. binutils are used to create, disassemble, and link binary files. |
| Bash Shell | A command-line shell that is used to interact with the operating system. Bash is the default shell on many GNU/Linux distributions, and it is also used on some other operating systems, such as macOS and Solaris. |
| Emacs Editor | A powerful text editor that can be used for editing code, writing documents, and browsing the web. Emacs is a very customizable editor, and it is used by many programmers and technical writers. |
| Image Manipulation Program (GIMP) | A free and open-source image editor that is similar to Adobe Photoshop. GIMP is a powerful tool for editing images, and it is used by many artists, photographers, and graphic designers. |
| Compiler for the Java Programming Language (GCJ) | A compiler for the Java programming language. GCJ is a free and open-source compiler that can be used to compile Java programs to native code. |
| TeX typesetting system | A typesetting system that is used to create documents, books, and articles. TeX is a powerful tool for typesetting, and it is used by many publishers, authors, and technical writers. |
| patch | A GNU version of Larry Wall’s program to take the output of diff and apply those differences to an original file to generate the modified version. |
| diff | Compares files, showing line-by-line changes in several different formats. |
| tar | A tape archiving program that includes multivolume support; the capability to archive sparse files (files with big chunks of data that are all zeros), handle compression and decompression, and create remote archives; and other special features for incremental and full backups. |
| gettext | A set of utilities that enables software maintainers to internationalize (that means make the software work with different languages such as English, French, Spanish, and so on) a software package’s user messages |
| make | A utility that determines which files of a large software package need to be recompiled, and issues the commands to recompile them. |
In addition to these well-known packages, there are many other GNU software packages that are available. For a more complete list, please see the GNU Project website: https://www.gnu.org/software/.