terça-feira, 3 de março de 2009

Compilando C/C++ no Linux e no Windows

Olá galera do Include C/C++!!

Este é meu primeiro post aqui no ICC e pretendo mostrar o mais básico, como compilar um programa básico em C ou C++ no linux e no Windows.

Primeiramente, vamos montar uma máquina com os softwares necessárias para programar em C/C++, caso o sistema operacional de sua preferência seja o Windows, a maneira mais fácil é baixar e instalar o Bloodshed Dev-C++, é um programa gratuito e pode ser baixado aqui, após instalar o Dev-C++ sua máquina Windows está pronta. Caso você utilize Linux, é um pouco mais fácil, a maioria das distribuições Linux já vem com o compilador GCC instalado ou então nos repositórios, bastando instalar, para este post estou utilizando Ubuntu 8.10 que pode ser baixado aqui. Para deixar sua máquina com tudo em cima no Ubuntu recomendo executar os seguintes comandos para garantir o bom funcionamento.

**Importante, é necessário estar logado como root ou ter permissões de administrador para executar estes comandos, se você estiver logado com outro usuário pode usar o comando "sudo -s" para adquirir privilégios de administrador.

Atualizando o sistema:

apt-get update
apt-get upgrade

Instalando o Buil-Essential

apt-get install build-essential


Feito isso, temos nossa máquina devidamente equipada com os softwares para criar nosso primeiro programa em C/C++.

Pra começar vamos criar um programa que imprima na tela a frase "Hello World!".

Código em C:

#include
main()
{
printf("Hello World!\n");
}


Código em C++:

#include
int main()
{
std::cout << "Hello World!\n" << std::endl;
return 0;
}


Para compilar no Windows execute o Bloodshed Dev-C++, crie um novo arquivo, copie e cole o código-fonte no arquivo, salve como hello.c ou hello.cpp e pressione F9 para compilar e executar o programa. No Dev-C++ não tem diferença na compilação e execução do código-fonte, tanto para C quanto para C++, basta pressionar F9.

Para compilar no Ubuntu abra qualquer editor de texto puro, pode ser o gedit, crie um novo arquivo, salve o arquivo com código em C como hello.c e o arquivo com código em C++ como hello.cpp, para compilar vá para o terminal (CTRL+ALT+F1) ou abra um terminal em modo design mesmo, basta pressionar as teclas ALT+F2 e executar "gnome-terminal" ou "xterm" para abrir um console de linha de comando, agora vem a parte divertida, vá até o diretório (pasta) onde você salvou os arquivos e execute os seguintes comandos para compilar o programa em C:

Garantir permissão de Administrador

sudo -s

Compilar o programa

gcc -c hello.c
gcc -o hello hello.o

Executar o programa

./hello


O programa imprimirá na tela a frase Hello World!

Para compilar e executar o programa em C++, execute os mesmos passos do programa em C, mas na hora executar os comandos trocar o gcc por g++ e a extenção do arquivo para .cpp, fica assim:

Garantir permissão de Administrador

sudo -s

Compilar o programa

g++ -c hello.cpp
g++ -o hello hello.o

Executar o programa

./hello


Por enquanto é isso, até a próxima!

22 comentários:

  1. também da para linkar (gerar o executável) do código objeto tudo num comando só:
    gcc -c arquivo_fonte.c -o nome_executavel_desja_gerar [ENTER]

    Grande Bolívar!!! Sippman??? e aí meu bruxo? cadê a conexão com mysql?? heheheh Flow galera!

    ResponderExcluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Forma de compilar e gerar o executavel com uma unica linha de comando
    sem gerar o arquivo com a extensão .o dentro da pasta.

    g++ -o string -pedantic -ansi string.cpp

    no caso string é o nome do arquivo fonte

    ResponderExcluir
  4. Estou tentando aqui e funciona, abre uma tela preta e imprime isso, mas dura menos de um décimo de segundo. Não deveria ficar aberto na tela?

    Outra coisa, ele pede pra colocar alguma coisa do lado do #include.

    ResponderExcluir
  5. Pra ficar na tela (Windows) vai precisar configurar um system pause, ou executar via linha de comando.

    ResponderExcluir
  6. Sim, precisa add na frente do #include e outro #include provavelmente, no blog não foi possível colocar o código...

    ResponderExcluir
  7. Este comentário foi removido pelo autor.

    ResponderExcluir
  8. Em C stdio.h
    Em C++ iostream.h

    ResponderExcluir
  9. Boa Noite, não, não esquecemos das bibliotecas, acontece que o sistema de posts do blog considerou como se fosse uma TAG HTML e não aparece.

    E obrigado por acompanhar o blog!

    ResponderExcluir
  10. Nossa,que triste :(
    Não consigo deixar na tela
    O pior de tudo é que tbm não consigo configurar pra isso ocorrer...
    O pior de tudo [2] é que meu professor passou um monte de situações pra montar projetos e só algumas que tem que adicionar alguma informação na tela que funcionam...
    E ainda assim continuo amando Telecomunicações, principalmente a parte de programação...

    ResponderExcluir
  11. Para que o programa "fixe" a tela no C++ no Windows, tem que colocar o código system("PAUSE");
    antes do final :D

    ResponderExcluir
  12. Como que faço pra compilar com o gcc no Linux e gerar o .exe para Windows?

    Valeu!

    ResponderExcluir
  13. Ah! Parabéns pela postagem do procedimento de tempo de execução. Me ajudou muito hoje...

    Valeu novamente!

    ResponderExcluir
  14. Eu estou mais acostumado com java e estranhei ver ser mais fácil, pois para o mesmo resultado aparece você tem colocar mais palavras (a quantidade de linhas é a mesma em C):

    public class Teste {
    public static void main(String[] args) {
    System.out.println("Hello World!");
    }
    }


    Ou:

    public class Teste {
    public static void main(String args[]) {
    System.out.println("Hello World!");
    }
    }

    Você pode personalizar o código mudando onde tem
    Teste e Hello World! ex:

    public class NovaClasse { // Nome da classe, você tem que salvar o arquivo como NovaClasse.java
    public static void main(String args[]) {
    System.out.println("Frase a ser exibida. ex: Esse Blog é muito legal :)"); // Frase que vai aparecer
    }
    }


    É muito bom a gente ver como funciona outras linguagens. :)
    E não se esqueça de salvar o arquivo com o nome da classe que você escolheu, no nosso caso NovaClasse.java e com a extensão .java
    Tchau!!!

    ResponderExcluir
  15. Pro pessoal que gosta de Java temos o http://foojava.blogspot.com/, acho que é o blog com mais "hello world" em Java da Internet, vale a pena pra iniciantes!

    ResponderExcluir
  16. rapaz em alguns compiladores g++ é include

    ResponderExcluir
  17. rapaz ta dificil de publicar aki no seu blog nao aparece os sinais de maior e menor TAGS do include q tambem sao tags aqui em html eu acho e esse negócio de digitar esse codigo eh horrivel desistimula,pois é, depois do include abre sinal de menor e coloca iostream e depois fecha sinal de maior sem colocar .h em alguns compiladores,quase desisto de postar isso tentei esse cógo chato umas 20 vezes eh tudo borrado isso nao sabe se agente eh maquina e sim se quem lê tem imaginação

    ResponderExcluir
  18. Boa tarde a todos,
    Sou iniciante (zerado em programação)! E a minha intenção é aprender a programar em C++ (pelo que pesquisei, essa é mais adequada para minhas atividades).

    Parâmetros:
    SO: Ubuntu 12.04 LTS 64bits;

    Eu atualizei o sistema, como descrito a cima, mas ele já se encontrava atualizado, nenhum pacote foi substituido, removido ou adicionado; (ok)

    Copie e colei o código para C++ no gedit e salvei como hello.cpp e fechei ; (ok)

    Pelo terminal eu entrei no diretório onde eu salvei o arquivo e depois loguei como super usuário sudo -s; (ok)

    Problemas:

    Na hora de compilar eu copiei e coleio primeiro comando g++ -c hello.cpp, e obtive a seguite mensagem:

    hello.cpp:1:10: erro: #include espera "NOME DO ARQUIVO" ou
    hello.cpp: Na função ‘int main()’:
    hello.cpp:4:2: erro: ‘cout’ não é um membro de ‘std’
    hello.cpp:4:35: erro: ‘endl’ não é um membro de ‘std’


    Tentei o mesmo para a tentativa em C e me retornou o segunte erro:

    hello.c:1:9: erro: #include espera "NOME DO ARQUIVO" ou
    hello.c: Na função ‘main’:
    hello.c:4:2: aviso: incompatible implicit declaration of built-in function ‘printf’ [habilitado por padrão]

    Diante disso eu peço a vocês, se puderem, uma ajuda para iniciar nesse novo "idioma" que é a programação.

    Desde já eu agradeço

    Att,

    Samir

    ResponderExcluir
    Respostas
    1. Boa Tarde,
      bem-vindo ao mundo da programação hehehehe. Cara, infelizmente o blogspot tenta formatar o texto e assim acaba cortando palavras... então faltou código ali em cima... vamos la, usei Visual Studio C++ para o teste (estou sem linux no momento). o código deveria ficar assim

      #include
      int main()
      {
      std::cout << "Hello World!\n" << std::endl;
      return 0;
      }

      qualquer dúvida só chamar. Att

      Excluir
  19. Eu fiz um compilador num sistema operacional Linux, só que agora preciso fazer ele rodar no Windows, não estou conseguindo, o que tenho que fazer?

    ResponderExcluir