ubuntu build-essential gcc g++

Ubuntu缺省情况下,并没有提供C/C++的编译环境,因此还需要手动安装。


  如果单独安装gcc以及g++比较麻烦,幸运的是,为了能够编译Ubuntu的内核,Ubuntu提供了一个build-essential软件包。


  查看该软件包的依赖关系,可以看到以下内容:


  $ apt-cache depends build-essential

  build-essential

  依赖: libc6-dev

  依赖:

  libc6-dev

  依赖: gcc

  依赖: g++

  依赖: make

  依赖: dpkg-dev


  也就是说,安装了该软件包,编译c/c++所需要的软件包也都会被安装。因此如果想在Ubuntu中编译c/c++程序,只需要安装该软件包就可以了。


  安装方法如下:


  $sudo apt-get install build-essential


Package: libc6.1-dev (2.11.3-4)

Embedded GNU C Library: Development Libraries and Header Files

Contains the symlinks, headers, and object files needed to compile and link programs which use the standard C library.

GCCGNU Compiler CollectionGNU编译器套裝),是一套由GNU开发的编程語言编译器。它是一套以GPL及LGPL許可證所發行的自由軟體,也是GNU計畫的关键部分,亦是自由的类Unix及蘋果電腦Mac OS X 操作系統的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。

GCC原名為GNU C語言編譯器GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴展,變得可處理C++。之後也變得可處理Fortran、Pascal、Objective-C、Java、Ada,以及Go與其他語言。

原本用C開發,後來因為LLVM,Clang的崛起令gcc更快將開發語言轉換為C++。GCC5.0將模仿競爭對手LLVM模組 化,大幅度的改變原本的架構。

GCC是由理查德·马修·斯托曼在1985年開始的。他首先擴增一個舊有的編譯器,使它能編譯C,這個編譯器一開始是以Pastel語言所寫的。Pastel是一個不可移植的Pascal語言特殊版,這個編譯器也只能編譯Pastel語言。為了讓自由軟體有一個編譯器,後來此編譯器由斯托曼和Len Tower在1987年[1]以C語言重寫[2]並成為GNU專案的編譯器。GCC的建立者由自由軟體基金會直接管理[3]

在1997年,一群不滿GCC緩慢且封閉的創作環境者,組織了一個名為EGCS《Experimental/Enhanced GNU Compiler System》的專案,此專案彙整了數項實驗性的分支進入某個GCC專案的分支中。EGCS比起GCC的建構環境更有活力,且EGCS最終也在1999年四月成為GCC的官方版本。

GCC目前由世界各地不同的數個程式設計師小組維護。它是移植到中央處理器架構以及作業系統最多的編譯器。

由於GCC已成為GNU系統的官方編譯器(包括GNU/Linux家族),它也成為編譯與建立其他作業系統的主要編譯器,包括BSD家族、Mac OS X、NeXTSTEP與BeOS。

GCC通常是跨平台軟體的編譯器首選。有別於一般侷限於特定系統與執行環境的編譯器,GCC在所有平台上都使用同一個前端處理程式,產生一樣的中介碼,因此此中介碼在各個其他平台上使用GCC編譯,有很大的機會可得到正確無誤的輸出程式。


以2011年10月26日釋出的4.6.2版為準,本編譯器版本可處理下列語言:

  • Ada (GNAT)
  • C (GCC)
  • C++(G++)
  • Fortran (Fortran 77: G77,Fortran 90: GFORTRAN)
  • Java (编译器:GCJ;解释器:GIJ)
  • Objective-C (GOBJC)
  • Objective-C++
  • Go
 

先前版本納入的CHILL前端由於缺乏維護而被廢棄。

Fortran前端在4.0版之前是G77,此前端僅支援Fortran 77。在本版本中,G77被廢棄而採用更新的GFortran,因為此前端支援Fortran 95。

下列前端依然存在:

  • Modula-2
  • Modula-3
  • Pascal
  • PL/I
  • D語言
  • Mercury
  • VHDL
 

[编辑]内嵌OpenMP支持

OpenMP是一种跨语言的对称多处理机(SMP)多线程并行程序的编程工具,也非常适合当今越来越流行的单CPU多核硬件环境,因此从gcc4.2开始,OpenMP成为其内嵌支持的并行编程规范,可以直接编译内嵌OpenMP语句的C/C++/Fortran95的源代码。gcc4.2之前如果想在C/C++/Fortran中嵌入OpenMP语句的话,需要额外安装库和预处理器才能识别和正确处理这些语句。

  • gcc 4.2.0开始支持OpenMP v2.5
  • gcc 4.4.0开始支持OpenMP v2.5及v3.0

GCC目前支援下列處理器架構(以4.1版為準):

  • Alpha
  • ARM
  • Atmel AVR
  • Blackfin
  • H8/300
  • IA-32(x86)與x86-64
  • IA-64 例如:Itanium
  • MorphoSys家族
  • Motorola 68000
  • Motorola 88000
  • MIPS與龍芯
  • PA-RISC
  • PDP-11
  • PowerPC
  • System/370,System/390
  • SuperH
  • HC12
  • SPARC
  • VAX
  • Renesas R8C/M16C/M32C家族
 

較不知名的處理器架構也在官方釋出版本中支援:

  • A29K
  • ARC
  • C4x
  • CRIS
  • D30V
  • DSP16xx
  • FR-30
  • FR-V
  • Intel i960
  • IP2000
  • M32R
  • 68HC11
  • MCORE
  • MMIX
  • MN10200
  • MN10300
  • NS32K
  • ROMP
  • Stormy16
  • V850
  • Xtensa
 

由FSF個別維護的GCC處理器架構:

  • D10V
  • MicroBlaze
  • PDP-10
  • MSP430
  • Z8000
  • NEC SX-9 並行向量處理機 [4]

你可能感兴趣的:(Linux,c++)