Autor Tópico: Problema para fazer rodar em C  (Lida 2482 vezes)

Offline Freitas_Igor

  • Usuário Ubuntu
  • *
  • Mensagens: 20
    • Ver perfil
Problema para fazer rodar em C
« Online: 15 de Agosto de 2009, 17:15 »
Galera seguinte eu to programando em C to usando o gedit para fazer os codigos ai para uso o gcc -Wall -c "nome no arquivo" para compilalo dai eh criado um arquivo .o com o mesmo nome do parametro q eu passei anteriormente.
Ate ai blz mais eu to querendo usar tipo um arquivo funcao.c main.c lib.h compilo os tres todos compilão blz ai faço gcc main.c -o executavel para ele criar o executavel pra eu rodar o programa e ele da isso:

igor@igor-laptop:~/Desktop/aulaEstrutura$ gcc main.c -o executavel
/tmp/ccspoZnX.o: In function `main':
main.c:(.text+0x3e): undefined reference to `criar'
main.c:(.text+0x6e): undefined reference to `obter_vaga'
collect2: ld returned 1 exit status

n consigo fazer o bicho rodar os arquivos estão numa mesma pasta todos os includes tão ok mais n sei o q ta dando isso alguem pode me ajudar!!??

obrigado!

Offline HelderC

  • Usuário Ubuntu
  • *
  • Mensagens: 227
  • helderc at IRC.Freenode
    • Ver perfil
    • HelderC
Re: Problema para fazer rodar em C
« Resposta #1 Online: 15 de Agosto de 2009, 20:36 »
Cara, tente usar alguma IDE como o Geany ou o Code::Blocs (recomendo esse).
Todos podem ser instalados pelo Synaptic.

Lunik

  • Visitante
Re: Problema para fazer rodar em C
« Resposta #2 Online: 15 de Agosto de 2009, 23:06 »
tente: gcc *.c -o executavel
(isso quando só houver na pasta os arquivos que quer compilar)

Normalmente você precisa passar todas as fontes que deseja compilar. Por isso em projetos grandes é bom usar o MAKE. (aqui no forum tem um topico excelente sobre o make)
« Última modificação: 15 de Agosto de 2009, 23:12 por Lunik »

Darcamo

  • Visitante
Re: Problema para fazer rodar em C
« Resposta #3 Online: 16 de Agosto de 2009, 14:58 »
Acontece que você tem que compilar os arquivos fonte e então linkar os arquivos objeto criados (os arquivos .o) para então obter o executável.
Se você usar o comando
Código: [Selecionar]
gcc *.c *.h -o executavelo gcc vai compilar os arquivos fonte e já linkar os arquivos objeto gerando então o executável, mas se você usar a opção "-c" você está dizendo para o gcc que ele deve apenas compilar, mas não linkar dessa forma você vai obter apenas os arquivos ".o".

Se preferir fazer a compilação e a linkagem separadamente pode usar os comandos
Código: [Selecionar]
gcc -Wall -c *.c *.hpara compilar e finalmente
Código: [Selecionar]
gcc *.o -o executavelpara linkar.

Na sua tentativa deu errado porque você linkou apenas com o ".o" do main e as funções definidas dos outros arquivos objeto não foram incluídas no executável. Por isso os erros de "undefined reference".

Continue usando o gedit e a linha de comando por enquanto para compilar. Assim você vai aprender como as coisas funcionam. Depois disso é que você pode procurar uma IDE se preferir. Partir direto para uma IDE é ruim porque as vezes você encontra problemas bestas e não entende como resolver porque sempre dependeu só da IDE.

O tópico sobre o Makefile está aqui http://ubuntuforum-pt.org/index.php/topic,21155.0.html

Offline Freitas_Igor

  • Usuário Ubuntu
  • *
  • Mensagens: 20
    • Ver perfil
Re: Problema para fazer rodar em C
« Resposta #4 Online: 17 de Agosto de 2009, 13:25 »
vlw galera agora rodo bacana vlw aiii!