What is GNU Compiler Collection (GCC) | Incredibuild (2024)

What is GNU Compiler Collection (GCC) | Incredibuild (1)

Try it now

<< Back to integrations

What is GNU Compiler Collection (GCC) | Incredibuild (2)

The GNU Compiler Collection, commonly known as GCC, is a set of compilers and development tools available for Linux, Windows, various BSDs, and a wide assortment of other operating systems.

Use GCC with Incredibuild

What is GCC?

The GNU Compiler Collection, commonly known as GCC, is a set of compilers and development tools available for Linux, Windows, various BSDs, and a wide assortment of other operating systems. It includes support primarily for C and C++ and includes Objective-C, Ada, Go, Fortran, and D. The Free Software Foundation (FSF) wrote GCC and released it as completely free (as in libre) software.

Try it now

What is GNU Compiler Collection (GCC) | Incredibuild (3)

History of GCC

GCC is a toolchain that compiles code, links it with any library dependencies, converts that code to assembly, and then prepares executable files. It follows the standard UNIX design philosophy of using simple tools that perform individual tasks well. The GCC development suite utilizes these discrete tools to compile software.

When you run GCC on a source code file, it first uses a preprocessor to include header files and discard comments. Next, it tokenizes the code, expands macros, detects any compile-time issues, then prepares it for compilation. It is then sent to the compiler, which creates syntax trees of the program’s objects and control flow and uses those to generate assembly code. The assembler then converts this code into the binary executable format of the system. Finally, the linker includes references to any external libraries as needed. The finished product is then executable on the target system.

How does it work?

GCC is a toolchain that compiles code, links it with any library dependencies, converts that code to assembly, and then prepares executable files. It follows the standard UNIX design philosophy of using simple tools that perform individual tasks well. The GCC development suite utilizes these discrete tools to compile software.
When you run GCC on a source code file, it first uses a preprocessor to include header files and discard comments. Next, it tokenizes the code, expands macros, detects any compile-time issues, then prepares it for compilation. It is then sent to the compiler, which creates syntax trees of the program’s objects and control flow and uses those to generate assembly code. The assembler then converts this code into the binary executable format of the system. Finally, the linker includes references to any external libraries as needed. The finished product is then executable on the target system.

Try it now

Get Free License

How to download GCC?

Nearly all Linux distributions either come pre-installed with GCC or have it in their primary repositories, making it easy to install.On Debian-based distributions like Debian, Ubuntu, and Linux Mint, run “apt install build-essentials”.
On RedHat-based distributions like RedHat Enterprise Linux, Fedora, CentOS, and Amazon Linux, run “yum group install ‘Development Tools’”.
On Arch-based distribution like Arch and Manjaro, run “pacman -S base-devel”.
macOS users can install GCC via brew with “brew install gcc”.
For Windows instructions, see the section titled GCC for Windows.

GCC features

GCC offers a wealth of features to developers, including multiple language support, in-depth code optimization, and cross-platform compilation. To learn more about GCC features, you can visit this GCC vs Clang blog post.

GCC examples

Compiling a program with GCC can be a straightforward matter/

gcc hello.c -o hello

Running this command processes the hello.c file and generates a binary called “hello”. Additional parameters can be passed.

gcc hello.c -O3 -o hello

In this example, the optimization parameter is set to 3, leading to more optimized code generation.

Additional libraries can be included as well.

gcc hello.c -lncurses -o hello

This example includes the ncurses library.

More complex compilations are managed by Makefiles and are invoked with the “make” command.

GCC for Windows

GCC is the heart of the GNU toolchain, the development system used to compile most Linux and open-source software. While there are a few specialty distributions that omit GCC, you will find it in nearly every Linux system. The Linux kernel itself is primarily compiled with GCC. The Linux kernel and the GNU toolchain share such a long history that the Linux ecosystem is commonly called GNU/Linux.

GCC for Linux

GCC is the heart of the GNU toolchain, the development system used to compile most Linux and open-source software. While there are a few specialty distributions that omit GCC, you will find it in nearly every Linux system.The Linux kernel itself is primarily compiled with GCC. The Linux kernel and the GNU toolchain share such a long history that the Linux ecosystem is commonly called GNU/Linux.

  • Perhaps GCC’s most significant advantage is its license—the GPL (General Public License) version 3, giving users essential software freedoms. The Free Software Foundation backs the project, and GCC enjoys a large community of developers, contributors, and support ecosystem.
  • GCC’s modular design allows for easier troubleshooting and source code maintenance and a shorter implementation curve for new features.

GCC and Incredibuild

GCC is fast, but Incredibuild makes GCC even faster. Incredibuildturbocharges developmentwith Virtualized Distributed Processing™ technology, turning every host into a supercomputer with hundreds of cores. With Incredibuild, accelerated product development from compilation to testing and release automation delivers better products to market radically faster.

What is GNU Compiler Collection (GCC) | Incredibuild (4)

Bottom line

GNU/Linux, open-source software, and much of the internet’s software backbone rely on the GNU Compiler Collection’s power and versatility.

Get Free License

More Compilers

  • Clang/LLVM
  • CUDA
  • What is GNU Compiler Collection (GCC) | Incredibuild (7)

    MS (VS) C++

  • What is GNU Compiler Collection (GCC) | Incredibuild (8)

    g++ / gnu

  • What is GNU Compiler Collection (GCC) | Incredibuild (9)

    tcc

  • What is GNU Compiler Collection (GCC) | Incredibuild (10)

    Intel c++ (floating license)

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. However you may visit Cookie Settings to provide a controlled consent.

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.

Always Enabled

Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.

CookieDurationDescription
ARRAffinitysessionARRAffinity cookie is set by Azure app service, and allows the service to choose the right instance established by a user to deliver subsequent requests made by that user.
ARRAffinitySameSitesessionThis cookie is set by Windows Azure cloud, and is used for load balancing to make sure the visitor page requests are routed to the same server in any browsing session.
cf_use_obpastCloudflare sets this cookie to improve page load times and to disallow any security restrictions based on the visitor's IP address.
cookielawinfo-checbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-advertisem*nt1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisem*nt" category .
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.

Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.

CookieDurationDescription
__cf_bm30 minutesThis cookie, set by Cloudflare, is used to support Cloudflare Bot Management.
bcookie2 yearsLinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognize browser ID.
bscookie2 yearsLinkedIn sets this cookie to store performed actions on the website.
langsessionLinkedIn sets this cookie to remember a user's language setting.
lidc1 dayLinkedIn sets the lidc cookie to facilitate data center selection.
UserMatchHistory1 monthLinkedIn sets this cookie for LinkedIn Ads ID syncing.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

CookieDurationDescription
_gat1 minuteThis cookie is installed by Google Universal Analytics to restrain request rate and thus limit the collection of data on high traffic sites.
_uetsid1 dayBing Ads sets this cookie to engage with a user that has previously visited the website.
_uetvid1 year 24 daysBing Ads sets this cookie to engage with a user that has previously visited the website.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.

CookieDurationDescription
_ga2 yearsThe _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
_gat_UA-8508435-11 minuteA variation of the _gat cookie set by Google Analytics and Google Tag Manager to allow website owners to track visitor behaviour and measure site performance. The pattern element in the name contains the unique identity number of the account or website it relates to.
_gcl_au3 monthsProvided by Google Tag Manager to experiment advertisem*nt efficiency of websites using their services.
_gid1 dayInstalled by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
_hjAbsoluteSessionInProgress30 minutesHotjar sets this cookie to detect the first pageview session of a user. This is a True/False flag set by the cookie.
_hjFirstSeen30 minutesHotjar sets this cookie to identify a new user’s first session. It stores a true/false value, indicating whether it was the first time Hotjar saw this user.
_hjIncludedInPageviewSample2 minutesHotjar sets this cookie to know whether a user is included in the data sampling defined by the site's pageview limit.
_hjIncludedInSessionSample2 minutesHotjar sets this cookie to know whether a user is included in the data sampling defined by the site's daily session limit.
_hjTLDTestsessionTo determine the most generic cookie path that has to be used instead of the page hostname, Hotjar sets the _hjTLDTest cookie to store different URL substring alternatives until it fails.
CONSENT2 yearsYouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
MR7 daysThis cookie, set by Bing, is used to collect user information for analytics purposes.
utm_campaign2 monthsGoogle Ad Services sets this cookie to store session campaign value if present.
utm_content2 monthsThis cookie is used for storing the session content value if present.
utm_source2 monthsThis cookie is used to record from where the visitor came to the website orginally. This information is used by the website operator to know the efficiency of their marketing.
utm_term2 monthsThis cookie is used to record from where the visitor came to the website orginally. This information is used by the website operator to know the efficiency of their marketing.
vuid2 yearsVimeo installs this cookie to collect tracking information by setting a unique ID to embed videos to the website.

Advertisem*nt cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.

CookieDurationDescription
_fbp3 monthsThis cookie is set by Facebook to display advertisem*nts when either on Facebook or on a digital platform powered by Facebook advertising, after visiting the website.
_mkto_trk2 yearsThis cookie, provided by Marketo, has information (such as a unique user ID) that is used to track the user's site usage. The cookies set by Marketo are readable only by Marketo.
fr3 monthsFacebook sets this cookie to show relevant advertisem*nts to users by tracking user behaviour across the web, on sites that have Facebook pixel or Facebook social plugin.
IDE1 year 24 daysGoogle DoubleClick IDE cookies are used to store information about how the user uses the website to present them with relevant ads and according to the user profile.
MUID1 year 24 daysBing sets this cookie to recognize unique web browsers visiting Microsoft sites. This cookie is used for advertising, site analytics, and other operations.
personalization_id2 yearsTwitter sets this cookie to integrate and share features for social media and also store information about how the user uses the website, for tracking and targeting.
test_cookie15 minutesThe test_cookie is set by doubleclick.net and is used to determine if the user's browser supports cookies.
utm_medium2 monthsThis cookie is used to record from where the visitor came to the website orginally. This information is used by the website operator to know the efficiency of their marketing.
VISITOR_INFO1_LIVE5 months 27 daysA cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSCsessionYSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devicesneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-idneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt.innertube::nextIdneverThis cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen.
yt.innertube::requestsneverThis cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen.

Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.

CookieDurationDescription
_hjSession_253745030 minutesNo description
_hjSessionUser_25374501 yearNo description
AnalyticsSyncHistory1 monthNo description
BIGipServersn-mch-v2-80sessionNo description
BIGipServersn02web-nginx-app_httpssessionNo description
ib_last_referrer2 monthsNo description
incap_ses_1319_2167377sessionNo description
li_gc2 yearsNo description
muc_ads2 yearsNo description
nlbi_2167377sessionNo description
original_req_urlpastNo description
referrer66_00f1 monthNo description
visid_incap_21673771 yearNo description
visitorId1 yearNo description
What is GNU Compiler Collection (GCC) | Incredibuild (2024)
Top Articles
Latest Posts
Article information

Author: Duane Harber

Last Updated:

Views: 5856

Rating: 4 / 5 (51 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Duane Harber

Birthday: 1999-10-17

Address: Apt. 404 9899 Magnolia Roads, Port Royceville, ID 78186

Phone: +186911129794335

Job: Human Hospitality Planner

Hobby: Listening to music, Orienteering, Knapping, Dance, Mountain biking, Fishing, Pottery

Introduction: My name is Duane Harber, I am a modern, clever, handsome, fair, agreeable, inexpensive, beautiful person who loves writing and wants to share my knowledge and understanding with you.