Problema compilar C++ [RESOLVIDO]

1. Problema compilar C++ [RESOLVIDO]

Victor Vinicius Sued Flávio
Victor Sued

(usa Arch Linux)

Enviado em 30/08/2008 - 12:47h

Galera eu estou tentando compilar o seguinte código com o Geany.

:linker input file unused because linking not done

Mais só que eu salvo e clico em compile e retorna a seguinte mensagem :

g++:maior_menor_vetor.sh: linker input file unused beacause linking not done


  


2. Re: Problema compilar C++ [RESOLVIDO]

Victor Vinicius Sued Flávio
Victor Sued

(usa Arch Linux)

Enviado em 30/08/2008 - 12:48h

#ifdef WIN32
#include <conio.h>
#else
#include <ncurses.h>
#endif

main()
{
initscr();
int maior_menor [] = {22,3,7,8,15,9,11,7,6,4}
int i, maior=0, menor = 99999;

for (i=0;i<9;i++)
{
if (maior_menor[i] > maior)
maior = maior_menor[i];
if (maior_menor[i] > menor)
menor = maior_menor[i];
}

printf("O maior e %d", maior);
prinf("O menor e %d", menor);
endwin();

}



3. Re: Problema compilar C++ [RESOLVIDO]

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 30/08/2008 - 19:02h

as causas mais genéricas são:
1) problema na instalação do binutils (que contém o linker)
2) você está usando o g++, que por padrão incluirá a libstdc++, porém o seu código é C e não C++.
3) você está passando as bibliotecas em seu comando de compilação quando talvez esteja apenas criando o objeto, e não o binário final (que é quando o linker entra em ação).

não sei como você está invocando o gcc, mas evite usar -c e -l ao mesmo tempo. ao utilizar -c o gcc irá apenas compilar seu código para gerar um objeto, e não invocará o linker, que é onde o -l entra em ação.
de um modo geral, isso não é um erro, e sim um alerta avisando que nenhuma linkagem foi executada e que as bibliotecas foram ignoradas.

exemplos:

errado:
# gcc -c arquivo.c -o arquivo.o -lblabla
ou
# gcc -o executavel arquivo.c

correto:
# gcc -c arquivo.c -o arquivo.o
# gcc -o executavel arquivo.o
ou simplesmente
# gcc arquivo.c -o executavel

se não for esse o caso e o problema persistir, tente reinstalar o binutils.


4. Re: Problema compilar C++ [RESOLVIDO]

Victor Vinicius Sued Flávio
Victor Sued

(usa Arch Linux)

Enviado em 30/08/2008 - 19:13h

hum... mais eu estou usando o Geany para compilar


5. Re: Problema compilar C++ [RESOLVIDO]

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 30/08/2008 - 19:21h

tente fazer manualmente pelo terminal (o geany já possui um embutido) para observar o que está acontecendo e se o problema se encaixa em alguma das alternativas citadas acima.


6. Re: Problema compilar C++ [RESOLVIDO]

Victor Vinicius Sued Flávio
Victor Sued

(usa Arch Linux)

Enviado em 30/08/2008 - 19:21h

Fiz agora no geany na linguagem C e troquei as bibliotecas ficando assim :

#include <stdio.h>

main()
{

int maior_menor [] = {22,3,7,8,15,9,11,7,6,4};
int i, maior=0, menor = 9999;

for (i=0;i<9;i++)
{
if (maior_menor[i] > maior)
maior = maior_menor[i];
if (maior_menor[i] > menor)
menor = maior_menor[i];
}

printf("O maior e %d", maior);
printf("O menor e %d", menor);


}

Agora quando clico em compilar retorna isso :

maior_menor_vetor.c:4: warning: return type defaults to 'int'
maior_menor_vetor.c: In function 'main':
maior_menor_vetor.c:21: warning: control reaches end of non-void function



7. Re: Problema compilar C++ [RESOLVIDO]

Victor Vinicius Sued Flávio
Victor Sued

(usa Arch Linux)

Enviado em 30/08/2008 - 19:53h

Bom arrumei deixando assim e não deu nenhum erro :

#include <stdio.h>

int main(int argc, char** argv)
{

int maior_menor [] = {22,3,7,8,15,9,11,7,6,4};
int i, maior=0, menor = 9999;

for (i=0;i<9;i++)
{
if (maior_menor[i] > maior)
maior = maior_menor[i];
if (maior_menor[i] > menor)
menor = maior_menor[i];
}

printf("O maior e %d", maior);
printf("O menor e %d", menor);
return 0;

}

Agora tento executar pelo geany e não vai vou no terminal e tento por la dessa maneira :

bash-3.2# /home/victorvinicius/Docs/programas/C/maior_menor_vetor.o

retorna isso :

bash: /home/victorvinicius/Docs/programas/C/maior_menor_vetor.o: Permission denied




8. Re: Problema compilar C++ [RESOLVIDO]

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 30/08/2008 - 19:55h

a função main deve retornar um int.
declare-a assim:

int main(int argc, char** argv) {
...seu_codigo_aqui...
return 0; /* precisa retornar um int. isso eliminará o erro */
}

nesse caso, como não há passagem de argumentos para seu programa, pode ser simplesmente:
int main(void) ao invés de (int argc, char** argv)



9. Re: Problema compilar C++ [RESOLVIDO]

Victor Vinicius Sued Flávio
Victor Sued

(usa Arch Linux)

Enviado em 30/08/2008 - 20:08h

problema é não quer executar


10. Re: Problema compilar C++ [RESOLVIDO]

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 30/08/2008 - 20:35h

ah, perdão, só agora vi o problema na execução. o que acontece é que você apenas gerou o código objeto (.o), e não o executável.

faça usando uma das seguintes maneiras:

# gcc -c maior_menor_vetor.c -o maior_menor_vetor.o
# gcc -o maior_menor_vetor maior_menor_vetor.o
(aqui você primeiro gera o código objeto e depois o utiliza para criar o executável)

ou apenas
# gcc -o maior_menor_vetor maior_menor_vetor.c
(aqui você pula a etapa de geração de código objeto (apesar de internamente o mesmo ser gerado, apenas não é enviado à saída))

o executável final será o arquivo (sem extensão) maior_menor_vetor
executando:
# ./maior_menor_vetor


11. Re: Problema compilar C++ [RESOLVIDO]

Victor Vinicius Sued Flávio
Victor Sued

(usa Arch Linux)

Enviado em 30/08/2008 - 20:42h

Deu certo muito obrigado :d






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts