Compilar C em modo texto

Iniciado por felipevsw, 22 de Agosto de 2010, 10:59

tópico anterior - próximo tópico

felipevsw

Buenas

Estou iniciando em programação em C e gostaria de fazer com o vim e compilar em moto texto.

Crio um programa básico no vim (hello world), salvo como hello.c

Ao invés de digitar sempre: gcc hello.c -o hello, eu já vi que pode ser feito simplesmente com: make hello.c que ele já faz tudo automático.
Consegui fazer deste jeito em outra distro, mas agora instalei o Ubuntu e não consigo fazer assim. Aparece a seguinte mensagem:

felipe@ubuntu:~$ make programa.c
make: Nothing to be done for `programa.c'.

Tem como fazer assim né, ou estou enganado?


bred81

Você tem instalado o build-essential?
sudo aptitude install build-essential
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

felipevsw

Eu instalei o Ubuntu 10.04.1, o build-essential já não vem instalado por default??

Se não vem, então não está instalado, porque eu não o instalei. Não estou no meu pc agora, mais tarde eu vejo.

Obrigado

felipevsw

O build-essential realmente não estava instalado na minha máquina.

Mas mesmo após tê-lo instalado continuou dando o mesmo problema com o make:

felipe@ubuntu:~$ make programa.c
make: Nothing to be done for `programa.c'.

zeroday

Felipe tire . .c , de somente um make programa ...dara certo =D.
Espero ter ajudado
"Lutar sempre , vencer na medida do possível , desistir jamais."

Darcamo

Para entender como funciona (e como criar) um Makefile veja o tópico
http://ubuntuforum-br.org/index.php/topic,21155.0.html

felipevsw

Não funcionou.

felipe@ubuntu:~$ make programa
make: Nothing to be done for `programa'.

bred81

Faz do jeito hardcore mesmo:
cria uma pasta bin no seu home.
mkdir /home/`echo $USER`/bin
Entra na pasta e cria um arquivo chamado Make
touch /home/`echo $USER`/bin/Make
Digita:
echo "gcc -o $1 $1.c" > /home/`echo $USER`/bin/Make
Reloga no sistema.
Quando você quiser compilar, digita:
Make file
Não precisa colocar o .c
======================================
Agora, falando sério, não tenho a menor idéia do que seja. Se quiser, pode usar esse método que funciona..
Devo ter errado alguma coisa na hora da compilação, mas ajeita que dá certo...
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

bred81

Citação de: felipevsw online 24 de Agosto de 2010, 15:23
Não funcionou.

felipe@ubuntu:~$ make programa
make: Nothing to be done for `programa'.

Pode ser uma observação idiota, mas, você tentou:
make programa.c
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

felipevsw

Citação de: bred81 online 24 de Agosto de 2010, 19:53
Citação de: felipevsw online 24 de Agosto de 2010, 15:23
Não funcionou.

felipe@ubuntu:~$ make programa
make: Nothing to be done for `programa'.

Pode ser uma observação idiota, mas, você tentou:
make programa.c


Eu sempre tentava assim, até que um usuário acima disse para tirar o .c...
Valeu a ajuda. Vou tentar fazer como tu disse e ver se dá certo. Posto os resultados aqui.
Abraço

felipevsw

Muito obrigado pela ajuda che!

Do jeito que tu falaste funcionou. O que estranho é eu ter conseguido direto em outras distros, nunca precisei fazer este procedimento que tu disseste.

Ogrigado novamente.

Abraço

zeroday

O estranho eh que compilo perfeitamente tirando o .c ... sei la pq ;D
"Lutar sempre , vencer na medida do possível , desistir jamais."

bred81

Citação de: felipevsw online 25 de Agosto de 2010, 15:30
Muito obrigado pela ajuda che!

Do jeito que tu falaste funcionou. O que estranho é eu ter conseguido direto em outras distros, nunca precisei fazer este procedimento que tu disseste.

Ogrigado novamente.

Abraço
De nada!
Agora, lembre-se que isso é um workaround! Ainda irei descobrir porque não está funcionando o "make programa.c"
O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...

Darcamo

O problema é que "make programa.c" normalmente não é o que você quer. Isso seria o que você quer se fosse para criar um arquivo chamado "programa.c".

Um Makefile é composto basicamente de "targets". Cada target pode ter dependências e os comandos do target devem criar (normalmente) um arquivo com o nome do target. Quando você executa "make targetname" ele vai executar os comandos para o target "targetname" que devem criar um arquivo com o mesmo nome. Imagino que você não queira criar um arquivo chamado programa.c, mas sim compilá-lo para gerar o executável. Logo, "make programa.c" não é o que você quer.

A maneira mais simples seria colocar no Makefile o seguinte conteúdo:

programa: programa.c
<TAB> g++ -o programa programa.c


Note na primeira linha que o nome do target é "programa" e ele depende do arquivo "programa.c". O único comando executado para esse target é o g++ e a opção "-o nome_do_executável" é passada para o g++ para que o nome do arquivo executável seja o mesmo do nome do target.
Com isso, ao executar "make programa" o seu programa será compilado e o executável com nome "programa" será criado.

O tutorial que indiquei antes é um pouco longo, mas acredito que responda essas dúvidas e você vai entender o funcionamento do programa make.