aroneaa Posted February 2, 2011 Report Share Posted February 2, 2011 Come da titolo ho dei problemi nel compilare in C da riga di comando. Scrivendo -gcc nomefile.c mi dice che non trova le librerie, quindi dovrei aggiungere il path delle librerie credo, ma non so come si fa.. qualcuno può aiutarmi? Link to comment Share on other sites More sharing options...
Darkangel Posted February 3, 2011 Report Share Posted February 3, 2011 in che modo hai scritto l'inclusione delle librerie all'interno del file c? Link to comment Share on other sites More sharing options...
Il.Socio Posted February 3, 2011 Report Share Posted February 3, 2011 (edited) Non e' nel file c che includi le librerie... li includi solo gli header. @aron, vedendo qui: http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html credo che tu possa usare il flag -L per indicare il path aggiuntivo in cui cercare le librerie. E' meglio se posti il messaggio di errore esatto che ti viene fornito dal gcc. Edited February 3, 2011 by Il.Socio Link to comment Share on other sites More sharing options...
Darkangel Posted February 3, 2011 Report Share Posted February 3, 2011 Non e' nel file c che includi le librerie... li includi solo gli header. @aron, vedendo qui: http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html credo che tu possa usare il flag -L per indicare il path aggiuntivo in cui cercare le librerie. E' meglio se posti il messaggio di errore esatto che ti viene fornito dal gcc. si è vero, ma cmq se li scrivi in modo sbagliato poi non te le trova cmq non sapevo di quell'opzione per la riga di comando Link to comment Share on other sites More sharing options...
Il.Socio Posted February 3, 2011 Report Share Posted February 3, 2011 (edited) E' almeno una decina di anni che non compilo piu' con gcc da linea di comando, rinfrescami la memoria se includi male un header, non ti segnala un errore del tipo header non trovato? ti segnala invece un errore tipo libreria non trovata? Edited February 3, 2011 by Il.Socio Link to comment Share on other sites More sharing options...
Darkangel Posted February 3, 2011 Report Share Posted February 3, 2011 (edited) E' almeno una decina di anni che non compilo piu' con gcc da linea di comando, rinfrescami la memoria se includi male un header, non ti segnala un errore del tipo header non trovato? ti segnala invece un errore tipo libreria non trovata? beh io avro compilato da riga di comando 10 volte penso di sicuro ti segnala l'errore in modo appropriato. cioè header se è di header e di libreria se è della libreria. anche io ho avuto di questi errori ma su editor e non c'ho pensato stamattina leggendo appena svegliato ho pensato a quello e non mi son minimamente ricordato degli header . la tua risposta mi ha fatto risvegliare la cosa Edited February 3, 2011 by Darkangel1985 Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 L'errore è:"No include path in wich to find stdio.h" All'interno del programma le librerie le ho incluse scrivendo #include<nomelibreria> Es: #include<stdio.h> Link to comment Share on other sites More sharing options...
Darkangel Posted February 3, 2011 Report Share Posted February 3, 2011 hai seguito quanto detto dal socio? io stamattina dormivo quando ho letto Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 (edited) credo di non aver ben capito.. io il file stdio.h ce l'ho nel computer.. ho anche provato a metterlo nella stessa cartella del file .cpp ma non me la vede comunque.. Edited February 3, 2011 by aroneaa Link to comment Share on other sites More sharing options...
Darkangel Posted February 3, 2011 Report Share Posted February 3, 2011 quello credo sia normale. hai provato a specificare il path della libreria nel comando gcc come indicato in quel link del socio? Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 si ma forse ho sbagliato.. allora, quando compilo io scrivevo: gcc nomefile.cpp e con questo mi da errore.. utilizzando il -L dovrei scrivere così?: gcc -L d:\percorso\percorso nomefile.cpp Link to comment Share on other sites More sharing options...
Il.Socio Posted February 3, 2011 Report Share Posted February 3, 2011 (edited) L'errore è:"No include path in wich to find stdio.h" All'interno del programma le librerie le ho incluse scrivendo #include<nomelibreria> Es: #include<stdio.h> chiariamo due cose: libreria e header sono due cose diverse... (sono proprio 2 file diversi e che possono risiedere in path differenti) quando dici header, stai facendo riferimento al file stdio.h quando dici libreria, stai facendo riferimento al file xxxx.xxxxx (forse libstdio.a) che contiene il codice eseguibile di tutte le funzioni presenti dentro stdio sono gli header che includi nei codici sorgente ed in altri header (non includi delle librerie) le librerie invece, le linka il compilatore (o meglio il linker) per generare il tuo eseguibile. detto cio'... sembra che non ti trova l'header (non la libreria) Quindi, individua sull'hard-disk il path in cui si trova il file stdio.h ed accertati che quel path sia presente in quelli che vengono presi in considerazione dal compilatore. Edited February 3, 2011 by Il.Socio Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 ma il -l va usato da riga di comando come ho scritto sopra? Link to comment Share on other sites More sharing options...
Il.Socio Posted February 3, 2011 Report Share Posted February 3, 2011 (edited) Credo di si, ma non fai prima a provare? Se provi, ti garantisco che il pc non salta in aria Edited February 3, 2011 by Il.Socio Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 ma figurati se mi faccio problemi a provare!! :lol: Son qua che provo in continuazione!! però mi da sempre no include path in which to find stdio.h Link to comment Share on other sites More sharing options...
Il.Socio Posted February 3, 2011 Report Share Posted February 3, 2011 Il flag -L ti serve per il path delle librerie, non per gli header... Nel tuo caso sono gli header che non vengono trovati. Probabilmente, devi aggiungere il path del tuo stdio.h a qualche variabile di ambiente. Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 d'accordo, ma come si fa? Link to comment Share on other sites More sharing options...
Il.Socio Posted February 3, 2011 Report Share Posted February 3, 2011 (edited) se sei sotto prompt di dos, ti basta fare un set VARIABILE=%VARIABILE%;PathDaAggiungere se sei sotto linux, non mi ricordo... Ovviamente, VARIABILE non deve essere "a casaccio", deve essere quella che viene presa in considerazione dal gcc e che usa per determinare l'insieme dei path in cui ricercare gli header. PathDaAggiungere e' invece il path in cui si trova il tuo stdio.h Edited February 3, 2011 by Il.Socio Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 ok.. inizio già a capirci di più.. ma in che modo mi è possibile trovare qual è la variabile che gcc prende in considerazione? :D Scusa se ti rompo.. Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 ok, le variabili di ambiente le ho trovate.. ora faccio qualche prova comunque grazie di tutto!! ^_^ Link to comment Share on other sites More sharing options...
Il.Socio Posted February 3, 2011 Report Share Posted February 3, 2011 ok, le variabili di ambiente le ho trovate.. ora faccio qualche prova Dove l'hai trovata e qual'e'? Link to comment Share on other sites More sharing options...
aroneaa Posted February 3, 2011 Author Report Share Posted February 3, 2011 Dove l'hai trovata e qual'e'? L'ho trovata qua http://www.matteolucarelli.net/opendev/gcc.htm ed è CPATH Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now