c++ - page - what is g++ command




Qual é a diferença entre g++ e gcc? (7)

Qual é a diferença entre g + + e gcc? Quais devem ser usados ​​para o desenvolvimento geral do c ++?


"GCC" é um termo abreviado comum para a coleção de compiladores GNU. Este é tanto o nome mais geral para o compilador, quanto o nome usado quando a ênfase está na compilação de programas em C (como a abreviação anteriormente significava “GNU C Compiler”).

Ao se referir à compilação C ++, é comum chamar o compilador “G ++”. Como existe apenas um compilador, também é correto chamá-lo de “GCC”, independentemente do contexto da linguagem; no entanto, o termo “G ++” é mais útil quando a ênfase está na compilação de programas C ++.

Você pode ler mais here .


A única diferença notável é que, se você passar um .c para o gcc, ele será compilado como C, enquanto o g ++ sempre o tratará como C ++.


Eu estava testando gcc e g ++ em um sistema linux. Usando o MAKEFILE, eu posso definir o compilador usado pelo "GNU make". Eu testei com o recurso de localização chamado "memória dinâmica" de "C plus plus" por:

int main(){

int * myptr = new int;
* myptr = 1;
printf("myptr[0] is %i\n",*myptr);
return 0;
}

Somente o g ++ pode compilar com sucesso no meu computador enquanto o gcc reportará o erro

undefined reference to `operator new(unsigned long)'

Então, minha própria conclusão é que o gcc não suporta totalmente "C plus plus". Parece que escolher g ++ para arquivos de origem C ++ é uma opção melhor.


GCC: Coleção de compiladores GNU

  • Referenciadores para todos os diferentes idiomas que são suportados pelo compilador GNU.

gcc: Compilador GNU C
g ++: compilador GNU C ++

As principais diferenças:

  1. O gcc irá compilar: arquivos * .c / *. cpp como C e C ++, respectivamente.
  2. g ++ irá compilar: arquivos * .c / *. cpp, mas todos eles serão tratados como arquivos C ++.
  3. Além disso, se você usar g ++ para vincular os arquivos de objetos, ele automaticamente vincula as bibliotecas std C ++ (o gcc não faz isso).
  4. A compilação dos arquivos C do gcc tem menos macros predefinidas.
  5. gcc compilação * .cpp e g + + compilando arquivos * .c / *. cpp tem algumas macros extras.

Macros extras ao compilar arquivos * .cpp:

#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern

gcc e g ++ são ambos compilador GNU. Ambos compilam c e c ++. A diferença é para arquivos * .c O gcc trata como um programa AC, e o g ++ o vê como um programa AC ++. Os arquivos * .cpp são considerados programas c ++. c ++ é um super conjunto de cea sintaxe é mais rigorosa, portanto, tenha cuidado com o sufixo.


gcc e g++ são compiladores da GNU Compiler Collection (que era uma vez apenas o GNU C Compiler ).

Mesmo que eles determinem automaticamente quais backends ( cc1 cc1plus ...) chamar dependendo do tipo de arquivo, a menos que sejam substituídos pelo -x language , eles possuem algumas diferenças.

A diferença provavelmente mais importante em seus padrões é em quais bibliotecas eles se vinculam automaticamente.

De acordo com as opções de link de documentação on-line do GCC e como o g ++ é invocado , g++ é equivalente a gcc -xc++ -lstdc++ -shared-libgcc (o primeiro é uma opção de compilador, o segundo é duas opções de vinculador). Isso pode ser verificado executando ambos com a opção -v (exibe os comandos do conjunto de ferramentas de backend sendo executados).


Qual é a diferença entre g++ e gcc ?

gcc evoluiu de uma única linguagem "GNU C Compiler" para ser uma "coleção GNU Compiler" multi-linguagem. O termo "Compilador GNU C" ainda é usado algumas vezes no contexto da programação C.

O g++ é o compilador C ++ para a coleção de compiladores GNU. Como o gnat é o compilador Ada para o gcc . veja Usando o GNU Compiler Collection (GCC)

Por exemplo, o comando Ubuntu 16.04 e 18.04 man g++ retorna a página de manual do GCC(1) .

O Ubuntu 16.04 e 18.04 man gcc afirma que ...

g++ aceita principalmente as mesmas opções que o gcc

e que o padrão ...

... o uso do gcc não adiciona a biblioteca C ++. g++ é um programa que chama o GCC e especifica automaticamente a vinculação à biblioteca C ++. Ele trata arquivos .c, .hei como arquivos de origem C ++ em vez de arquivos de origem C, a menos que -x seja usado. Este programa também é útil ao pré-compilar um arquivo de cabeçalho C com uma extensão .h para uso em compilações C ++.

Pesquise as páginas de manual do gcc busca de detalhes sobre as variações de opções do gcc e g++ .

Qual deles deve ser usado para o desenvolvimento geral do c ++?

Tecnicamente, gcc ou g++ podem ser usados ​​para desenvolvimento geral de C ++ com configurações de opções aplicáveis. No entanto, o comportamento padrão g++ é naturalmente alinhado a um desenvolvimento em C ++.

A página man do Ubuntu 18.04 adicionou o seguinte parágrafo:

A maneira usual de executar o GCC é executar o executável chamado gcc , ou machine-gcc ao fazer a compilação cruzada, ou machine-gcc-version para executar uma versão específica do GCC. Quando você compila programas C ++, você deve invocar o GCC como g++ .





g++