GNU C e C ++ compiladores para Linux
O mais importante ferramenta de desenvolvimento de software em Linux é GCC - o GNU C e o compilador C ++. Na verdade, GCC pode compilar três línguas: C, C ++ e Objective-C (a linguagem que adiciona capacidades de programação orientadas a objeto, C).
Você usa o mesmo gcc comando para compilar e ligar ambas as ++ arquivos de origem C e C. O compilador GCC suporta padrão ANSI C, tornando-o fácil de portar qualquer programa ANSI C para Linux. Além disso, se você já usou um compilador C em outros sistemas Unix, você deve se sentir em casa com o GCC.
usando GCC
Use o gcc comando para invocar GCC. Por padrão, quando você usa o gcc comando em um arquivo de origem, preprocesses CCG, compila e links para criar um arquivo executável. No entanto, você pode usar as opções do CCG para parar este processo numa fase intermédia.
Por exemplo, você pode invocar gcc usando o -c opção para compilar um arquivo de origem e gerar um arquivo objeto, mas não para realizar a etapa de link.
Usando GCC para compilar e vincular alguns arquivos de origem C é fácil. Suponha que você queira compilar e vincular um programa simples composta de dois arquivos de origem. Para realizar essa tarefa, use o seguinte código fonte do programa code-tarefa que está armazenado no arquivo area.c calcula a área de um círculo cujo raio é especificado na linha de comando.
Compilar programas em C ++
GNU CC é um combinado C e o compilador C ++, portanto, o gcc comando também pode compilar arquivos de origem C ++. GCC usa a extensão de arquivo para determinar se um arquivo é C ou C ++. arquivos C têm uma minúscula .c extensão, enquanto que C ++ arquivos terminam com .C ou .cpp.
Apesar de gcc comando pode compilar um arquivo C ++, esse comando não ligar automaticamente com várias bibliotecas de classe que os programas C ++ normalmente exigem. Compilar e ligar um programa em C ++ usando o comando g ++ é fácil porque ele é executado gcc com opções apropriadas.
Explorando opções GCC
Aqui está a sintaxe básica do gcc comando:
Opções gcc nomes de arquivos
Cada opção começa com um hífen (-) e, geralmente, tem um nome longo, como -funsigned-char ou -finline-funções. Muitas opções comumente utilizados são curtos, no entanto, tais como -c, para compilar somente, e -g, para gerar informações de depuração (necessário para depurar o programa usando o depurador GNU, gdb).
Você pode ver um resumo de todas as opções do CCG, digitando o seguinte comando em uma janela de terminal:
homem gcc
Em seguida, você pode navegar através das opções do CCG comumente usados. Normalmente, você não tem que fornecer opções do CCG explicitamente porque as configurações padrão são muito bem para a maioria das aplicações. Esta tabela lista algumas das opções GCC você pode usar.
Opção | Significado |
---|---|
-ansi | Suporta apenas sintaxe padrão ANSI C. (Esta opção disablessome características específicas-C GNU, tais como the_asm and_typeofpalavras-chave.) Quando usado com g ++, suporta apenas C ISO-padrão ++. |
-c | Compila e gera apenas o arquivo de objeto. |
-DMACRO | Define a macro com a cadeia "1"como seu valor. |
-DMACRO = defn | Define a macro como defn, Ondedefn é alguma cadeia de texto. |
-E | Executa somente o pré-processador C. |
-pousio-de precisão simples | Executa todas as operações matemáticas em precisão simples. |
-FPCC-struct-retorno | retorna todos struct e os valores de união na memória, em vez de inregisters. (Retornando valores dessa forma é menos eficiente, mas pelo menos ele é compatível com outros compiladores.) |
-fPIC | Gera código independente de posição (PIC), adequado para uso na biblioteca ashared. |
-freg-struct-retorno | Quando possível, os retornos struct eUnião valoriza registros. |
-g | Gera informações de depuração. (O depurador GNU pode usar thisinformation.) |
-I DIRETÓRIO | Pesquisa o diretório especificado para arquivos que você incluir byusing o #incluir preprocessordirective. |
-L DIRETÓRIO | Pesquisa o diretório especificado para bibliotecas. |
-l BIBLIOTECA | Pesquisas da biblioteca especificado quando ligar. |
-mcpu = cputype | Otimiza o código para um processador específico. (Cputype pode tomar muitos valores diferentes -alguns dos mais comuns são i386, i486, i586, i686, Pentium, Pentium Pro, pentium2, pentium3, pentium4.) |
-o ARQUIVO | Gera o arquivo de saída especificado (usado para designar o nameof um arquivo executável). |
-00 (dois zeros) | Não otimizar. |
-O ou -O1 (letra O) | Otimiza o código gerado. |
-O2 (Letra O) | Otimiza ainda mais. |
-O3 (Letra O) | Executa otimizações além daquelas feitas para -O2 |
-Os (Letra O) | Otimiza para o tamanho (para reduzir a quantidade total de código). |
-pedante | Gera erros se todas as extensões não-ANSI-padrão areUsed. |
-pg | Adiciona código extra para o programa para que, quando executado, este programgenerates informação de que o gprofprograma pode usar para exibir os detalhes de temporização para várias partes do programacom. |
-compartilhado | Gera um arquivo de objeto compartilhado (normalmente usado para criar biblioteca ashared). |
-UMACRO | Undefines as macros especificados. |
-v | Exibe o número da versão do GCC. |
-W | não gera mensagens de aviso. |
-W1, OPÇÃO | passa a OPÇÃO string (contendo opções separadas por multiplecomma) para o vinculador. Para criar um librarynamed compartilhada libXXX.so.1, por exemplo, usar a bandeira thefollowing: -WL,-soname, libXXX.so.1. |