Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
GNU Compiler Collection
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== History == In late 1983, in an effort to [[Bootstrapping (compilers)|bootstrap]] the [[GNU]] operating system, [[Richard Stallman]] asked [[Andrew S. Tanenbaum]], the author of the [[Amsterdam Compiler Kit]] (also known as the ''[[Vrije Universiteit Amsterdam|Free University]]'' ''Compiler Kit''), for permission to use that software for GNU. When Tanenbaum advised him that the compiler was not free, and that only the university was free, Stallman decided to work on a different compiler.<ref>{{cite book |last=von Hagen |first=William |date=2006 |title=The Definitive Guide to GCC |edition=2nd |series=Definitive Guides |publisher=Apress |isbn=978-1-4302-0219-6 |page=XXVII |quote=So he wrote to VUCK's author asking if GNU could use it. Evidently, VUCK's developer was uncooperative, responding that the university was free but that the compiler was not. |url=https://books.google.com/books?id=wQ6r3UTivJgC |access-date=September 25, 2020 |archive-date=April 5, 2024 |archive-url=https://web.archive.org/web/20240405040135/https://books.google.com/books?id=wQ6r3UTivJgC |url-status=live }}</ref> His initial plan was to rewrite an existing compiler from [[Lawrence Livermore National Laboratory]] from [[Pastel (programming language)|Pastel]] to C with some help from [[Leonard H. Tower Jr.|Len Tower]] and others.<ref name=LLLCompiler>{{cite web | last = Stallman | first = Richard | title = About the GNU Project | publisher = The GNU Project | date = September 20, 2011 | url = https://www.gnu.org/gnu/thegnuproject.html | access-date = October 9, 2011 | archive-date = August 9, 2019 | archive-url = https://web.archive.org/web/20190809050636/http://www.gnu.org/gnu/thegnuproject.html | url-status = live }}</ref><ref>{{cite journal | editor-last = Puzo | editor-first = Jerome E. | title = Gnu's Zoo | journal = GNU's Bulletin | volume = 1 | issue = 1 | date = February 1986 | publisher = Free Software Foundation | url = https://www.gnu.org/bulletins/bull1.txt | access-date = 2007-08-11 | archive-date = June 23, 2015 | archive-url = https://web.archive.org/web/20150623180723/http://www.gnu.org/bulletins/bull1.txt | url-status = live }}</ref> Stallman wrote a new C front end for the Livermore compiler, but then realized that it required megabytes of stack space, an impossibility on a [[Motorola 68000|68000]] Unix system with only 64 KB, and concluded he would have to write a new compiler from scratch.<ref name=LLLCompiler /> None of the Pastel compiler code ended up in GCC, though Stallman did use the C front end he had written.<ref name=LLLCompiler /><ref name=":6">{{cite book |last=von Hagen |first=William |date=2006 |title=The Definitive Guide to GCC |edition=2nd |series=Definitive Guides |publisher=Apress |isbn=978-1-4302-0219-6 |page=XXVII |url=https://books.google.com/books?id=wQ6r3UTivJgC |access-date=September 25, 2020 |archive-date=April 5, 2024 |archive-url=https://web.archive.org/web/20240405040135/https://books.google.com/books?id=wQ6r3UTivJgC |url-status=live }}</ref> GCC was first released March 22, 1987, available by [[File Transfer Protocol|FTP]] from [[Massachusetts Institute of Technology|MIT]].<ref>{{cite newsgroup | title = GNU C compiler beta test release | author = Richard M. Stallman (forwarded by Leonard H. Tower Jr.) | date = March 22, 1987 | newsgroup = comp.lang.c | url = https://groups.google.com/group/comp.lang.misc/msg/32eda22392c20f98 | access-date = October 9, 2011 | archive-date = June 2, 2013 | archive-url = https://web.archive.org/web/20130602041632/http://groups.google.com/group/comp.lang.misc/msg/32eda22392c20f98 | url-status = live }}</ref> Stallman was listed as the author but cited others for their contributions, including Tower for "parts of the parser, RTL generator, RTL definitions, and of the Vax machine description", Jack Davidson and [[Christopher W. Fraser]] for the idea of using [[Register transfer language|RTL]] as an intermediate language, and Paul Rubin for writing most of the preprocessor.<ref name=GccContributors>{{citation | last = Stallman | first = Richard M. | title = Using and Porting the GNU Compiler Collection (GCC) | chapter-url = https://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_23.html | publisher = Free Software Foundation, Inc. | date = June 22, 2001 | orig-year = First published 1988 | chapter = Contributors to GNU CC | page = 7 | access-date = June 18, 2015 | postscript = . | archive-date = January 18, 2023 | archive-url = https://web.archive.org/web/20230118185814/https://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_23.html | url-status = live }}</ref> Described as the "first free software hit" by [[Peter H. Salus]], the GNU compiler arrived just at the time when [[Sun Microsystems]] was unbundling its development tools from [[SunOS|its operating system]], selling them separately at a higher combined price than the previous bundle, which led many of Sun's users to buy or download GCC instead of the vendor's tools.<ref name="penguin">{{cite book |first=Peter H. |last=Salus |author-link=Peter H. Salus |title=The Daemon, the Gnu and the Penguin |chapter=Chapter 10. SUN and gcc |chapter-url=http://www.groklaw.net/article.php?story=20050525231654621 |publisher=[[Groklaw]] |year=2005 |access-date=September 14, 2015 |archive-date=June 20, 2022 |archive-url=https://web.archive.org/web/20220620020435/http://www.groklaw.net/article.php?story=20050525231654621 |url-status=live }}</ref> While Stallman considered [[GNU Emacs]] as his main project, by 1990 GCC supported thirteen computer architectures, was outperforming several vendor compilers, and was used commercially by several companies.<ref>{{cite news|last=Garfinkel|first=Simson L.|author-link=Simson Garfinkel|date=6 August 1990|title=Get ready for GNU software|page=102|newspaper=Computerworld|url=https://books.google.com/books?id=mZ0kj6qvsvYC&pg=PT101|access-date=}}</ref> === EGCS fork{{Anchor|EGCS Fork}} === As GCC was licensed under the GPL, programmers wanting to work in other directions—particularly those writing interfaces for languages other than C—were free to develop their own [[Fork (software development)|fork]] of the compiler, provided they meet the GPL's terms, including its requirements to distribute [[source code]]. Multiple forks proved inefficient and unwieldy, however, and the difficulty in getting work accepted by the official GCC project was greatly frustrating for many, as the project favored stability over new features.<ref name="egcs">{{citation | last = Henkel-Wallace | first = David | title = A new compiler project to merge the existing GCC forks | url = https://gcc.gnu.org/news/announcement.html | date = August 15, 1997 | access-date = May 25, 2012 | postscript = . | archive-date = January 18, 2023 | archive-url = https://web.archive.org/web/20230118185814/https://gcc.gnu.org/news/announcement.html | url-status = live }}</ref> The FSF kept such close control on what was added to the official version of GCC 2.x (developed since 1992) that GCC was used as one example of the "cathedral" development model in [[Eric S. Raymond]]'s essay ''[[The Cathedral and the Bazaar]]''. In 1997, a group of developers formed the ''Experimental/Enhanced GNU Compiler System{{Citation needed|date=April 2025}} (EGCS)'' to merge several experimental forks into a single project.<ref name="egcs" /><ref name=":6" /> The basis of the merger was a development snapshot of GCC (taken around the 2.7.2 and later followed up to 2.8.1 release). Mergers included g77 (Fortran), PGCC ([[P5 (microarchitecture)|P5]] [[Pentium]]-optimized GCC),<ref name=":6" /> many C++ improvements, and many new architectures and [[operating system]] variants.<ref>{{Cite web|title=The Short History of GCC development|url=http://www.softpanorama.org/People/Stallman/history_of_gcc_development.shtml|access-date=2021-01-24|website=www.softpanorama.org|archive-date=November 9, 2022|archive-url=https://web.archive.org/web/20221109211504/https://softpanorama.org/People/Stallman/history_of_gcc_development.shtml|url-status=live}}</ref> While both projects followed each other's changes closely, EGCS development proved considerably more vigorous, so much so that the FSF officially halted development on their GCC 2.x compiler, blessed EGCS as the official version of GCC, and appointed the EGCS project as the GCC maintainers in April 1999. With the release of GCC 2.95 in July 1999 the two projects were once again united.<ref>{{Cite web|title=History - GCC Wiki|url=https://gcc.gnu.org/wiki/History#Reunification|access-date=2020-09-28|website=gcc.gnu.org|archive-date=January 18, 2023|archive-url=https://web.archive.org/web/20230118185814/https://gcc.gnu.org/wiki/History#Reunification|url-status=live}}</ref><ref name=":6" /> GCC has since been maintained by a varied group of programmers from around the world under the direction of a steering committee.<ref name=":0">{{Cite web|url=https://gcc.gnu.org/steering.html|title=GCC steering committee - GNU Project|website=gcc.gnu.org|access-date=July 25, 2016|archive-date=January 18, 2023|archive-url=https://web.archive.org/web/20230118185814/https://gcc.gnu.org/steering.html|url-status=live}}</ref> GCC 3 (2002) removed a front-end for [[CHILL]] due to a lack of maintenance.<ref>{{cite web|title=PATCH] Remove chill|url=https://gcc.gnu.org/ml/gcc-patches/2002-04/msg00887.html|access-date=July 29, 2010|website=gcc.gnu.org|archive-date=October 20, 2016|archive-url=https://web.archive.org/web/20161020222510/https://gcc.gnu.org/ml/gcc-patches/2002-04/msg00887.html|url-status=live}}</ref> Before version 4.0 the Fortran front end was <code>g77</code>, which only supported [[FORTRAN 77]], but later was dropped in favor of the new [[GNU Fortran]] front end that supports [[Fortran 95]] and large parts of [[Fortran 2003]] and [[Fortran 2008]] as well.<ref name="gcc_wiki_f2003">{{cite web|title=Chart of Fortran 2003 Features supported by GNU Fortran|url=https://gcc.gnu.org/wiki/Fortran2003Status|access-date=2009-06-25|publisher=[[GNU]]|archive-date=January 18, 2023|archive-url=https://web.archive.org/web/20230118185814/https://gcc.gnu.org/wiki/Fortran2003Status|url-status=live}}</ref><ref name="gcc_wiki_f2008">{{cite web|title=Chart of Fortran 2008 Features supported by GNU Fortran|url=https://gcc.gnu.org/wiki/Fortran2008Status|access-date=2009-06-25|publisher=[[GNU]]|archive-date=January 18, 2023|archive-url=https://web.archive.org/web/20230118185814/https://gcc.gnu.org/wiki/Fortran2008Status|url-status=live}}</ref> As of version 4.8, GCC is implemented in C++.<ref>{{Cite web|url=https://gcc.gnu.org/gcc-4.8/changes.html|title=GCC 4.8 Release Series — Changes, New Features, and Fixes - GNU Project|website=gcc.gnu.org|access-date=February 17, 2015|archive-date=December 8, 2015|archive-url=https://web.archive.org/web/20151208064435/https://gcc.gnu.org/gcc-4.8/changes.html|url-status=live}}</ref> Support for [[Cilk Plus]] existed from GCC 5 to GCC 7.<ref>{{Cite web|url=https://gcc.gnu.org/gcc-5/changes.html#c-family|title=GCC 5 Release Series — Changes, New Features, and Fixes|website=gcc.gnu.org|access-date=January 13, 2022|archive-date=January 18, 2023|archive-url=https://web.archive.org/web/20230118185814/https://gcc.gnu.org/gcc-5/changes.html#c-family|url-status=live}}</ref><ref>{{Cite web|url=https://gcc.gnu.org/gcc-8/changes.html|title=GCC 8 Release Series — Changes, New Features, and Fixes|website=gcc.gnu.org|access-date=January 13, 2022|archive-date=November 29, 2018|archive-url=https://web.archive.org/web/20181129002653/http://gcc.gnu.org/gcc-8/changes.html|url-status=live}}</ref> GCC has been [[porting|ported]] to a wide variety of [[instruction set architecture]]s, and is widely deployed as a tool in the development of both free and [[proprietary software]]. GCC is also available for many [[embedded system]]s, including [[Symbian]] (called ''gcce''),<ref>{{cite web|url=http://www.inf.u-szeged.hu/symbian-gcc/|title=Symbian GCC Improvement Project|access-date=2007-11-08|archive-date=August 1, 2014|archive-url=https://web.archive.org/web/20140801121616/http://www.inf.u-szeged.hu/symbian-gcc/|url-status=live}}</ref> [[ARM architecture family|ARM]]-based, and [[Power ISA]]-based chips.<ref name="Linux Board Support Packages">{{cite web|last=|first=|date=|title=Linux Board Support Packages|url=http://www.freescale.com/webapp/sps/site/overview.jsp?code=CW_BSP&fsrch=1|url-status=dead|archive-url=https://web.archive.org/web/20110607140609/http://www.freescale.com/webapp/sps/site/overview.jsp?code=CW_BSP&fsrch=1|archive-date=2011-06-07|access-date=2021-01-24|website=}}</ref> The compiler can target a wide variety of platforms, including [[video game console]]s such as the [[PlayStation 2]],<ref name=":3">{{cite web|url=http://ps2stuff.playstation2-linux.com/gcc_build.html |title=setting up gcc as a cross-compiler |work=ps2stuff |date=2002-06-08 |access-date=2008-12-12 |url-status=dead |archive-url=https://web.archive.org/web/20081211044658/http://ps2stuff.playstation2-linux.com/gcc_build.html |archive-date=December 11, 2008 }}</ref> Cell SPE of PlayStation 3,<ref name=":4">{{Cite web|url=https://gcc.gnu.org/wiki/CompileFarm|title=CompileFarm - GCC Wiki|website=gcc.gnu.org|access-date=September 19, 2016|archive-date=January 18, 2023|archive-url=https://web.archive.org/web/20230118185814/https://gcc.gnu.org/wiki/CompileFarm|url-status=live}}</ref> and [[Dreamcast]].<ref name=":5">{{cite web |url=http://www.ngine.de/gccguide.html |title=sh4 g++ guide |archive-url=https://web.archive.org/web/20021220025554/http://www.ngine.de/gccguide.html |archive-date=2002-12-20 |access-date=2008-12-12 }}</ref> It has been ported to more kinds of [[central processing unit|processors]] and operating systems than any other compiler.<ref name=":1">{{cite web|last=|first=|date=|title=Linux Information Project|url=http://www.linfo.org/gcc.html|access-date=2010-04-27|website=|publisher=LINFO|quote=The GCC has been ported to (i.e., modified to run on) more than 60 platforms, which is more than for any other compiler.|archive-date=January 3, 2023|archive-url=https://web.archive.org/web/20230103063841/http://www.linfo.org/gcc.html|url-status=live}}</ref>{{Self-published inline|date=January 2021}}{{Better source needed|date=January 2021}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)