problema em C

Iniciado por oiad, 28 de Outubro de 2006, 19:12

tópico anterior - próximo tópico

oiad

boas a tds!
sou iniciante tanto em ubuntu cm em C.
tou a estudar ciência de computadores e tou a dar C em programação.
hoje tentei passar uns exercicios para o pc, compilá-los e executá-los para ver o seu resultado.
instalei o build-essential, usei o emacs para escrever o código e compilei com sucesso um exercicio, depois de resolver alguns erros.
usei o seguinte código para compilar o exercicio:
gcc -o teste teste.c
mas quando tento executar o ficheiro teste a linha de comandos diz-me que não encontra o comando e se eu tentar usando sh teste aparece a seguinte mensagem:
teste: teste: cannot execute binary file

alguém sabe qual poderá ser o problema e cm resolve-lo?

Felix

"Nosso Primeiro Programa: O Clássico Alo Mundo!

Vamos escrever nosso primeiro programa em C. Inicialmente abra o editor de texto de sua preferência e edite o seguinte programa:

/*Alo mundo em C*/
main()
{
printf("Alo Mundo! \n");
}


Salve-o como alo.c e digite a seguinte linha de comando:

#gcc - o alo alo.c

o gcc irá gerar o executável alo, em seguida digite:
# ./alo

o promt irá retornar:
Alo Mundo!
#


(retirado e editado da apostila "Programando em C com o Linux - Parte I - O começo"
Por Antonio Marcelo
amarcelo@plebe.com.br
http://wwww.plebe.com.br)

Não sei se o site está no ar, mas se vc quiser tenho a apostila e posso enviar por e-mail, se interessar mande uma MP...

Obs.: espero que o exemplo ajude

oiad

já funciona, nao sabia que tinha que usar ./teste!
thanks ;)!

cybertraveler

Sim. Quando você executa um programa, é preciso passar o endereço completo dele, a menos que ele esteja em algum local como /bin ou /etc/bin.

kunigas

Olá.

Alguém sabe como fazer pra poder executar  o programa sem o "./" ?

Tentei adicionar esta linha ao meu .bash_profile:

PATH=$PATH:$HOME/bin:./

Mas não está funcionando    :(

Andre Cavalcante

Tente só o

PATH=$PATH:$HOME/bin


André Cavalcante
--------------
André Cavalcante
Manaus, AM

kunigas

Olá.

Também não funcionou.

O que funcionou foi ter colocado o comando que eu postei no .bashrc e não no .bash_profile. Estranho  ???

Mas obrigado pela atenção.

Darcamo

Se vc apenas escrever teste, o linux vai procurar o executável chamado teste em algumas pastas padrões do sistema (o /bin, /usr/bin, /usr/local/bin, etc).

Se seu programa está na pasta /home/fulano vc tem que usar o comando /home/fulano/teste pra executar o programa. Só que se vc já está no diretório /home/fulano você pode executar o programa apenas com ./teste
Isso ocorre porque o "." substitui o diretório atual. Logo ./teste vai ter o efeito de /home/fulano/teste
Por isso não dá pra tirar o "./"

Agora, quando vc inclui o diretório /home/fulano no PATH, o linux vai passar a olhar nessa pasta pra ver se acha um executável chamado "teste" quando vc tenta executar apenas "teste" no terminal. Aí a gente cai no primeiro caso e o seu programa vai funcionar sem o "./" (embora vc possa continuar a executálo com ./teste se quiser).

alexmatos

Não entendi qual seria a vantagem de executar sem o ./

Darcamo

Realmente eu acho que é mais fácil simplesmente usar o ./ do que adicionar o diretório atual no PATH.
Mas se ele não gosta de colocar o ./ antes e prefere adicionar o diretório atual no PATH a escolha é dele.

Liberdade

alexmatos

Citação de: Darcamo online 06 de Janeiro de 2007, 13:46
Realmente eu acho que é mais fácil simplesmente usar o ./ do que adicionar o diretório atual no PATH.
Mas se ele não gosta de colocar o ./ antes e prefere adicionar o diretório atual no PATH a escolha é dele.

Liberdade

Compreendo e concordo. Porém, isso poderia causar problemas se existisse um executável no home com o mesmo nome de um programa instalado (ex.: gnuplot). Se eu desse o comando gnuplot no Terminal, qual dos dois seria executado? Haveria prioridades?

tfmoraes

que eu saiba ele começa a procurar o executavel na primeira pasta do path