Problema di esecuzione di un programma C da terminale

8 risposte [Ultimo messaggio]
Ritratto di dparlato7
dparlato7
(Newbie)
Offline
Newbie
Iscritto: 26/08/2014
Messaggi: 3

Credo di aver scelto la sezione giusta, ma se avessi sbagliato ditemelo e sposto.
Ho creato il più semplice dei programmi, ovvero Hello World.

#include

int main(){
printf("Hello World\n");
return(0);
}

La compilazione pare funzionare, ma quando poi lo vado ad eseguire mi esce una serie di errori di "definizione multipla". Posto ora tutti i comandi da terminali e ciò che mi esce.

diego@linux-0yns:~/Scrivania/speriamo> gcc verde.c -o verde
diego@linux-0yns:~/Scrivania/speriamo> gcc verde
verde: nella funzione "_fini":
/home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/crti.S:80: definizione multipla di "_fini"
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crti.o:/home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/crti.S:80: definito qui per la prima volta
verde: nella funzione "data_start":
(.data+0x0): definizione multipla di "__data_start"
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crt1.o:(.data+0x0): definito qui per la prima volta
verde: nella funzione "data_start":
(.data+0x8): definizione multipla di "__dso_handle"
/usr/lib64/gcc/x86_64-suse-linux/4.8/crtbegin.o:(.data+0x0): definito qui per la prima volta
verde:(.rodata+0x0): definizione multipla di "_IO_stdin_used"
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crt1.o:(.rodata.cst4+0x0): definito qui per la prima volta
verde: nella funzione "_start":
/home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:67: definizione multipla di "_start"
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crt1.o:/home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:67: definito qui per la prima volta
verde: nella funzione "_init":
/home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/crti.S:64: definizione multipla di "_init"
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crti.o:/home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/crti.S:64: definito qui per la prima volta
/usr/lib64/gcc/x86_64-suse-linux/4.8/crtend.o:(.tm_clone_table+0x0): definizione multipla di "__TMC_END__"
verde:(.data+0x10): definito qui per la prima volta
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: error in verde(.eh_frame); no .eh_frame_hdr table will be created.
collect2: error: ld returned 1 exit status

Sono arrivato a reinstallare Opensuse, ma il problema non si è risolto. Cosa posso fare?

Ritratto di Raff82
Raff82
(Geek)
Offline
Geek
Iscritto: 30/03/2011
Messaggi: 151

dparlato7 ha scritto:

Sono arrivato a reinstallare Opensuse, ma il problema non si è risolto. Cosa posso fare?

Dimmi che stai scherzando.

Ammesso che non sia uno scherzo, nella prima riga (#include) presumo che tu intendessi:

#include <stdio.h>

Poi, il comando:
gcc verde.c -o verde

compila verde.c e produce direttamente l'eseguibile "verde"; per eseguirlo, ti posizioni nella directory di output e digiti:
./verde

Ritratto di dparlato7
dparlato7
(Newbie)
Offline
Newbie
Iscritto: 26/08/2014
Messaggi: 3

Si, ovviamente intendevo <stdio.h>.

E no, in realtà non scherzo affatto. Io ho installato qualche giorno fa il sistema operativo ed ho dovuto aggiungere una libreria suggerita dal mio prof. universitario. Provando il comando gcc verde mi dava problemi (e a questo punto so che è ovvio, ma m era stato suggerito da un collega universitario, che spero per lui abbia sbagliato in buona fede). Al che l'ho rimossa, ma ancora niente. Ho pensato di aver fatto qualche casino in modalità root, e quindi ho provato a reinstallare il tutto.

Comunque, grazie mille.

Ritratto di max.riservo
max.riservo
(Geek)
Offline
Geek
Iscritto: 04/02/2012
Messaggi: 167

Creato file Verde.c contenente :

#include <stdio.h>
 
int main(){
printf("Hello World\n");
return(0);
}

Compilato su openSUSE 12.3 64 bit con gcc Verde.c -o Verde -> risultato : nessun errore

Lanciato con ./Verde -> risultato : Hello Word

Sei sicuro di aver installato gcc, make e quant' altro può servire per la compilazione (verifica da Yast)?

EDIT :
il post risulta segnato come RISOLTO : probabilmente il mio intervento è stato superfluo (se non inutile), anche se, da quanto scritto nel msg n° 2 NON pare proprio che sia stato risolto ......

A volte sono presente anche in altri forum di programmazione ....

Ritratto di Grinch
Grinch
(Guru)
Offline
Guru
Iscritto: 05/12/2011
Messaggi: 880

Simpaticamente Crossposting , qui risolto senza sapere come , e altrove senza risposta

Ritratto di max.riservo
max.riservo
(Geek)
Offline
Geek
Iscritto: 04/02/2012
Messaggi: 167

Grinch ha scritto:

Simpaticamente Crossposting ....

Forse bisognerebbe iniziare anche in questo forum (come in altri) a sanzionare il crossposting ......

A volte sono presente anche in altri forum di programmazione ....

Ritratto di dparlato7
dparlato7
(Newbie)
Offline
Newbie
Iscritto: 26/08/2014
Messaggi: 3

Beh, se ho ringraziato la persona che mi ha risposto precedentemente, mi pare ovvio che la soluzione fosse quella che mi ha suggerito lui, indicando pure come il comando che usavo prima che mi era stato suggerito era ovviamente sbagliato. Non avrò messo i puntini sulle proverbiali i, ma onestamente mi sembrava superfluo. Ma, se queste sono le regole:

gcc verde.c -o verde
./verde

Era questa la soluzione.

Grazie ancora.

Ritratto di max.riservo
max.riservo
(Geek)
Offline
Geek
Iscritto: 04/02/2012
Messaggi: 167

dparlato7 ha scritto:

Beh, se ho ringraziato la persona che mi ha risposto precedentemente, mi pare ovvio che la soluzione fosse quella che mi ha suggerito lui, indicando pure come il comando che usavo prima che mi era stato suggerito era ovviamente sbagliato. Non avrò messo i puntini sulle proverbiali i, ma onestamente mi sembrava superfluo. Ma, se queste sono le regole:

gcc verde.c -o verde
./verde

Era questa la soluzione.

Grazie ancora.

Nel futuro, se me ne accorgerò, eviterò di rispondere a thread 'risolti' : in fondo se il thread è risolto probabilmente è superfluo aggiungere altro.

Nel futuro, se puoi, cerca di essere un poco più chiaro : dopo aver elencato tutta una serie di problemi, chiudere un post con 'comunque grazie per la risposta' A ME a fatto pensare che il problema NON fosse risolto ma che tu avessi educatamente ringraziato per aver ricevuto UNA risposta ....

Problema risolto, grazie per il chiarimento, saluti.

A volte sono presente anche in altri forum di programmazione ....

Ritratto di Grinch
Grinch
(Guru)
Offline
Guru
Iscritto: 05/12/2011
Messaggi: 880

dparlato7 ha scritto:

Beh, se ho ringraziato la persona che mi ha risposto precedentemente, mi pare ovvio che la soluzione fosse quella che mi ha suggerito lui, indicando pure come il comando che usavo prima che mi era stato suggerito era ovviamente sbagliato. Non avrò messo i puntini sulle proverbiali i, ma onestamente mi sembrava superfluo. Ma, se queste sono le regole:

gcc verde.c -o verde
./verde

Era questa la soluzione.

Grazie ancora.

Ma fammi il piacere ......
http://www.it-opensuse.org/problema-nell-esecuzione-di-un-programma-c-da-terminale-t1459.html
La soluzione l' avevi già ricevuta Liar