GNU Compiler Collection in the context of Linux kernel


GNU Compiler Collection in the context of Linux kernel

GNU Compiler Collection Study page number 1 of 1

Play TriviaQuestions Online!

or

Skip to study material about GNU Compiler Collection in the context of "Linux kernel"


⭐ Core Definition: GNU Compiler Collection

The GNU Compiler Collection (GCC) (formerly GNU C Compiler) is a collection of compilers from the GNU Project that support various programming languages, hardware architectures, and operating systems. The Free Software Foundation (FSF) distributes GCC as free software under the GNU General Public License (GNU GPL). GCC is a key component of the GNU toolchain which is used for most projects related to GNU and the Linux kernel. With roughly 15 million lines of code in 2019, GCC is one of the largest free programs in existence. It has played an important role in the growth of free software, as both a tool and an example.

When it was first released in 1987 by Richard Stallman, GCC 1.0 was named the GNU C Compiler since it only handled the C programming language. It was extended to compile C++ in December of that year. Front ends were later developed for Objective-C, Objective-C++, Fortran, Ada, Go, D, Modula-2, Rust and COBOL among others. The OpenMP and OpenACC specifications are also supported in the C and C++ compilers.

↓ Menu
HINT:

👉 GNU Compiler Collection in the context of Linux kernel

The Linux kernel is a free and open-source Unix-like kernel that is used in many computer systems worldwide. The kernel was created by Linus Torvalds in 1991 and was soon adopted as the kernel for the GNU operating system (OS) which was created to be a free replacement for Unix. Since the late 1990s, it has been included in many operating system distributions, many of which are called Linux. One such Linux kernel operating system is Android which is used in many mobile and embedded devices.

Most of the kernel code is written in C as supported by the GNU Compiler Collection (GCC) which has extensions beyond standard C. The code also contains assembly code for architecture-specific logic such as optimizing memory use and task execution. The kernel has a modular design such that modules can be integrated as software components – including dynamically loaded. The kernel is monolithic in an architectural sense since the entire OS kernel runs in kernel space.

↓ Explore More Topics
In this Dossier

GNU Compiler Collection in the context of CompCert

CompCert is a formally verified optimizing compiler for a large subset of the C99 programming language (known as Clight) which currently targets PowerPC, ARM, RISC-V, x86 and x86-64 architectures. This project, led by Xavier Leroy, started officially in 2005, funded by the French institutes ANR and INRIA. The compiler is specified, programmed and proven in the Rocq proof assistant. It aims to be used for programming embedded systems requiring reliability. The performance of its generated code is often close to that of GCC (version 3) at optimization level -O1, and always better than that of GCC without optimizations.

Since 2015, AbsInt offers commercial licenses, provides support and maintenance, and contributes to the advancement of the tool. CompCert is released under a noncommercial license, and is therefore not free software, although some of its source files are dual-licensed with the GNU Lesser General Public License version 2.1 or later or are available under the terms of other licenses.

View the full Wikipedia page for CompCert
↑ Return to Menu

GNU Compiler Collection in the context of Intermediate representation

An intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive to further processing, such as optimization and translation. A "good" IR must be accurate – capable of representing the source code without loss of information – and independent of any particular source or target language. An IR may take one of several forms: an in-memory data structure, or a special tuple- or stack-based code readable by the program. In the latter case it is also called an intermediate language.

A canonical example is found in most modern compilers. For example, the CPython interpreter transforms the linear human-readable text representing a program into an intermediate graph structure that allows flow analysis and re-arrangement before execution. Use of an intermediate representation such as this allows compiler systems like the GNU Compiler Collection and LLVM to be used by many different source languages to generate code for many different target architectures.

View the full Wikipedia page for Intermediate representation
↑ Return to Menu

GNU Compiler Collection in the context of GNU GPL

The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or copyleft licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first copyleft license available for general use. It was originally written by Richard Stallman, the founder of the Free Software Foundation (FSF), for the GNU Project. The license grants the recipients of a computer program the rights of the Free Software Definition. The licenses in the GPL series are all copyleft licenses, which means that any derivative work must be distributed under the same or equivalent license terms. The GPL states more obligations on redistribution than the GNU Lesser General Public License and differs significantly from widely used permissive software licenses such as BSD, MIT, and Apache.

Historically, the GPL license family has been one of the most popular software licenses in the free and open-source software (FOSS) domain. Prominent free software programs licensed under the GPL include the Linux operating system kernel and the GNU Compiler Collection (GCC). David A. Wheeler argues that the copyleft provided by the GPL was crucial to the success of Linux-based systems, giving the contributing programmers some assurance that their work would benefit the world and remain free, rather than being potentially exploited by software companies who would not be required to contribute to the community.

View the full Wikipedia page for GNU GPL
↑ Return to Menu

GNU Compiler Collection in the context of Richard Stallman

Richard Matthew Stallman (/ˈstɔːlmən/ STAWL-mən; born March 16, 1953), also known by his initials, rms, is an American free software movement activist and programmer. He campaigns for software to be distributed in such a manner that its users have the freedom to use, study, distribute, and modify that software. Software which ensures these freedoms is termed free software. Stallman launched the GNU Project, founded the Free Software Foundation (FSF) in October 1985, developed the GNU Compiler Collection and GNU Emacs, and wrote all versions of the GNU General Public License.

Stallman launched the GNU Project in September 1983 to write a Unix-like computer operating system composed entirely of free software. With that he also launched the free software movement. He has been the GNU project's lead architect and organizer, and developed a number of pieces of widely used GNU software including among others, the GNU Compiler Collection, GNU Debugger, and GNU Emacs text editor.

View the full Wikipedia page for Richard Stallman
↑ Return to Menu

GNU Compiler Collection in the context of Objective-C

Objective-C is a high-level general-purpose, object-oriented programming language that adds Smalltalk-style message passing (messaging) to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its NeXTSTEP operating system. Due to Apple macOS’s direct lineage from NeXTSTEP, Objective-C was the standard language used, supported, and promoted by Apple for developing macOS and iOS applications (via their respective application programming interfaces (APIs), Cocoa and Cocoa Touch) from 1997, when Apple purchased NeXT, until the introduction of the Swift language in 2014.

Objective-C programs developed for non-Apple operating systems or that are not dependent on Apple's APIs may also be compiled for any platform supported by GNU GNU Compiler Collection (GCC) or LLVM/Clang.

View the full Wikipedia page for Objective-C
↑ Return to Menu

GNU Compiler Collection in the context of Integrated development environment

An integrated development environment (IDE) is software that provides a relatively comprehensive set of features for software development. An IDE is intended to enhance productivity by providing development features with a consistent user experience as opposed to using separate tools, such as vi, GDB, GCC, and make.

At a minimum, an IDE typically supports source-code editing, source control, build automation, and debugging. An IDE may include support for integrating tools such as a compiler, runtime environment or version control system, but sometimes such tools are bundled with the IDE. Some IDEs provide special support for constructing a graphical user interface (GUI). Many IDEs support object-oriented programming via features such as class browser and object browser. Typically, an IDE provides special support for one or more programming languages, allowing for features tailored to a language. Some IDEs can be extended to support additional languages.

View the full Wikipedia page for Integrated development environment
↑ Return to Menu