Olá.
Estou recebendo alguns (vários) warnings quando compilo usando as opções indicadas.
ep: In function `_start':
/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:65: multiple definition of `_start'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o:/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:65: first defined here
ep: (.rodata+0x0): multiple definition of `_fp_hw'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: (.rodata+0x0): first defined here
ep: In function `_fini':
/build/buildd/glibc-2.9/csu/../sysdeps/generic/initfini.c:109: multiple definition of `_fini'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crti.o:/build/buildd/glibc-2.9/csu/../sysdeps/generic/initfini.c:109: first defined here
ep: (.rodata+0x4): multiple definition of `_IO_stdin_used'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: (.rodata.cst4+0x0): first defined here
ep: In function `__data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: (.data+0x0): first defined here
ep: In function `__data_start':
(.data+0x4): multiple definition of `__dso_handle'
/usr/lib/gcc/i486-linux-gnu/4.3.3/crtbegin.o: (.data+0x0): first defined here
ep: In function `_init':
/build/buildd/glibc-2.9/build-tree/i386-libc/csu/crti.S:15: multiple definition of `_init'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crti.o:/build/buildd/glibc-2.9/build-tree/i386-libc/csu/crti.S:15: first defined here
/tmp/ccsyid0p.o: In function `le_linha_arquivo':
ep1-5898512.c: (.text+0x0): multiple definition of `le_linha_arquivo'
ep: (.text+0xb4): first defined here
/tmp/ccsyid0p.o: In function `main':
ep1-5898512.c: (.text+0x170): multiple definition of `main'
ep: (.text+0x23c): first defined here
/usr/lib/gcc/i486-linux-gnu/4.3.3/crtend.o: (.dtors+0x0): multiple definition of `__DTOR_END__'
ep: (.dtors+0x4): first defined here
collect2: ld returned 1 exit status
Pesquisando um pouco, encontrei aqui (ítem 5.2.1) que ao utilizar a opção -nostartfiles evito estes multiple definitions. De fato, ao utilizá-la, muitos são eliminados, mas permaneço com estes:
ep1-5898512.c: (.text+0x0): multiple definition of `le_linha_arquivo'
ep: (.text+0xb4): first defined here
/tmp/ccUBpRKD.o: In function `main':
ep1-5898512.c: (.text+0x170): multiple definition of `main'
ep: (.text+0x23c): first defined here
collect2: ld returned 1 exit status
Como posso proceder? Não sei se usar -nostartfiles o é uma alternativa válida, mas mesmo assim continuo com os outros erros.
Estou com o gcc 4.3.3, se faz alguma diferença.
Obrigado,
Martin
Vc fez com mais de um arquivo?
Mande o(s) arquivo(s) para eu ver.
Esse erro aparece se vc definir duas vezes as funções citadas, Pode ser feito sem querer com um include errado..
Me mande o código para eu dizer melhor.
Acho q o prof colocou no site mas se não viu meu email é:
lima.natan@gmail.com
Mande o(s) arquivo(s) para eu ver.
Esse erro aparece se vc definir duas vezes as funções citadas, Pode ser feito sem querer com um include errado..
Me mande o código para eu dizer melhor.
Acho q o prof colocou no site mas se não viu meu email é:
lima.natan@gmail.com
Não sei se é o caso, mas eu já recebi umas mensagens desse tipo quando chamei o gcc passando os parâmetros errados, fazendo coisas como gcc (...) -o arquivo.c arquivo. Depois eu chamei do jeito certo, gcc (...) arquivo.c -o arquivo, e deu certo.
Também recebi umas mensagens do tipo dessas últimas - acho que aparecem quando se chama a função antes de tê-la declarado. Resolvi declarando protótipos da função, isto é, algo do tipo
void funcao (int a);
int main () {
void funcao (int a) {
para que a função main saiba que a função funcao existe, ainda que não tenha sido declarada antes. Como disse, não sei se é o caso, mas espero que ajude!
Também recebi umas mensagens do tipo dessas últimas - acho que aparecem quando se chama a função antes de tê-la declarado. Resolvi declarando protótipos da função, isto é, algo do tipo
void funcao (int a);
int main () {
int num;
funcao (num);
}void funcao (int a) {
printf ("%d", a);
}para que a função main saiba que a função funcao existe, ainda que não tenha sido declarada antes. Como disse, não sei se é o caso, mas espero que ajude!
Estava faltando o -o...