# Programar em C/Utilizando um compilador
## Compiladores: visão geral

Um compilador é, geralmente, um programa de modo texto, que deve ser operado diretamente da linha de comando, sem nenhuma interface gráfica. Essa é uma das razões pelas quais muitas pessoas preferem usar IDEs. No entanto, saber um pouco sobre como usar o compilador pela linha de comando pode vir a ser útil, por exemplo quando você não tiver um IDE à disposição. Não é nenhum bicho-de-sete-cabeças, e a sintaxe da maioria dos compiladores é semelhante.
Para executar o compilador, você precisa abrir um terminal (ou "prompt de comando", como costuma ser chamado no Windows, ou ainda console). É lógico que se você estiver em um sistema sem ambiente gráfico (como o DOS), você não precisa fazer isso.
O Windows só tem um terminal nativo, que é o interpretador de comandos dele (cmd.exe ou command.com). Pacotes como o Cygwin e o MSys (do mesmo projeto que o MinGW) incluem terminais alternativos que funcionam basicamente à maneira do Linux.
No Linux, além dos terminais de modo texto, há vários emuladores de terminal, entre os quais estão o XTerm, o Konsole (KDE) e o Terminal do Gnome. O uso de todos eles é idêntico.

## gcc

Com o gcc, compilador da GNU utilizado principalmente no sistema operacional linux ou de tipo unix (mas também com versão para a arquitetura/sistema operacional MSWindows®), você pode executar a compilação e a montagem separadamente ou com um único comando. Se você tem vários arquivos-fonte, é mais recomendável executar as duas etapas separadamente: se você atualizar apenas um arquivo, só precisará recompilar o que atualizou e depois remontar. No entanto, se você está desenvolvendo um projeto grande, é recomendável usar ferramentas de automação do processo de compilação, como o make.
Resumo:
Aqui são listadas algumas das opções do gcc:
* -c: Compila o código fonte mas não faz as ligações. A saída é um arquivo objeto.
* -o: serve para dar um nome ao arquivo de saída.
* -O2: ativa otimização no nível 2
* -g: salva os símbolos de depuração (o que permite usar um depurador)
* -Wall: ativa todos os avisos do compilador
* -pedantic: ativa os avisos necessários para que o código esteja estritamente de acordo com os padrões
Para compilar o arquivo "programa.c", gerando o código-objeto "programa.o":
Para gerar o executável "programa binario" bin ou "programa.exe" no Windows/DOS a partir do código-objeto:
Para gerar o executável diretamente a partir do arquivo-fonte:

## Dev-C++

Dev-C++ é uma IDE (Integrated Development Environment) desenvolvido para ambiente MS Windows® (funcionando em ambientes Unix através do Wine). Embora ele possua uma interface gráfica, sua instalação inclui o compilador gcc do projeto mingw, completamente funcional via linha de comando.
Via interface gráfica a compilação é feita através do atalho de teclado <Ctrl>+F9. Via linha de comando, o compilador gcc utilizado por ele possui a maioria das mesmas opções básicas das versões *nix explicadas acima.

## Visual C++

Em alguma versão não especificada do Visual C++, para compilar o arquivo "programa.c", gerando o código-objeto "programa.obj":
Para gerar o executável "programa.exe" a partir do código-objeto:
Para gerar o executável a partir do arquivo-fonte: