View Full Version : Programmare in C: gli include cambiano in FreeBSD?
Non credo sia la sezione più corretta ma non ho trovato di meglio.
Devo fare un programma in C e devo lavorare sui thread quindi devo includere diverse librerie tra cui ad esempio "Thread.h".
A regola dovrei compilare il programma su FreeBSD ma per praticità l'ho fatto sotto windows sia con DevC++ sia con Djgpp ma per entrambi mi ritorna l'errore che tali librerie non esistono.
Ho cercato allora nelle cartelle dei due programmi ed in effetti ci sono molte librerie ma quelle lì che mi servono no.
Ho provato anche sotto FreeBSD e gli errori del mancato include sono spariti però gli altri di "funzioni non dichiarate" sono rimasti. Quindi non credo cambi molto se compilo sotto windows o sotto linux o sotto FreeBSD.. o no?
Domanda 2: dal prof mi è stato detto di compilare con il comando "gcc" e l'opzione "-wall" per far visualizzare anche i warning. Però il programma dice che quell'opzione è sconosciuta.. ne sapete niente?
Prova a usare codeblocks per compilare, è multipiattaforma e open source. ;)
Purtroppo devo per forza usarlo su FreeBSD perché così è l'esame.
Ho mandato una mail al prof ed in settimana vado a ricevimento per fargli queste domande davvero pessime.. e vabbè, tanto ormai alle figure di m. c'ho fatto il callo.
Damage92
18-04-2010, 18:43
Devo fare un programma in C e devo lavorare sui thread quindi devo includere diverse librerie tra cui ad esempio "Thread.h".
A regola dovrei compilare il programma su FreeBSD ma per praticità l'ho fatto sotto windows sia con DevC++ sia con Djgpp ma per entrambi mi ritorna l'errore che tali librerie non esistono.
Ho cercato allora nelle cartelle dei due programmi ed in effetti ci sono molte librerie ma quelle lì che mi servono no.
Ho provato anche sotto FreeBSD e gli errori del mancato include sono spariti però gli altri di "funzioni non dichiarate" sono rimasti. Quindi non credo cambi molto se compilo sotto windows o sotto linux o sotto FreeBSD.. o no?
Domanda 2: dal prof mi è stato detto di compilare con il comando "gcc" e l'opzione "-wall" per far visualizzare anche i warning. Però il programma dice che quell'opzione è sconosciuta.. ne sapete niente?
Da quello che so le librerie per gestire i thread sono diverse tra *nix e Windows... su uno ci sono le pthread, l'altro non so!
Per gcc... hai scritto -wall con la w maiuscola?
*nix è case-sensitive, -Wall è diverso da -wall ;)
Per gli altri errori che hai riguardo le librerie, penso derivino da qualche errore nell'impostare il codice... oppure dicono espressamente che mancano le librerie?
Grazie per l'aiuto.. pensavo che il linguaggio C e le librerie fossero universali cioè che potessi compilare su qualsiasi compilatore e su qualsiasi sistema operativo a patto di fornirgli le stesse librerie.
E che poi magari i problemi sarebbero arrivati solo in fase di esecuzione perché alcuni comandi non sono eseguibili su windows.
Per l'opzione -wall l'ho scritta sicuramente minuscola. Invece è maiuscola? Non ci avevo fatto caso ma ora che me l'hai detto ho guardato sul libro ed è proprio maiuscola!!
-.-'
L'ho usata su djgpp e sicuramente mi diceva che era un'opzione sconosciuta. Sotto FreeBSD invece non ricordo ma mi pare desse lo stesso errore.
Domani vado all'università e riprovo a compilarlo.. e magari mi avrà anche risposto il professore..
Ah!! Le pthread sono per i thread Posix? Non mi dovrebbero servire nel progetto però a lezione l'ha fatti.. meglio che mi guardi anche quelle diapositive tanto non sono troppe pagine.. :-(
Per l'opzione -wall l'ho scritta sicuramente minuscola. Invece è maiuscola? Non ci avevo fatto caso ma ora che me l'hai detto ho guardato sul libro ed è proprio maiuscola!!
-.-'
L'ho usata su djgpp e sicuramente mi diceva che era un'opzione sconosciuta. Sotto FreeBSD invece non ricordo ma mi pare desse lo stesso errore.
Sì, -Wall va scritto con la W maiuscola. E' una flag per gcc, quindi non c'è da stupirsi che djgpp ti dica che è sconosciuta.
Ah!! Le pthread sono per i thread Posix? Non mi dovrebbero servire nel progetto però a lezione l'ha fatti.. meglio che mi guardi anche quelle diapositive tanto non sono troppe pagine.. :-(
Infatti quel "Thread.h" mi sembrava strano facesse parte delle pthread. Ma se non usi quelle, che librerie usi?
Da quello che so le librerie per gestire i thread sono diverse tra *nix e Windows... su uno ci sono le pthread, l'altro non so!
Le pthread ci sono anche per Windows, basta installarle (http://sourceware.org/pthreads-win32/). ;)
Come non detto, mi sono confuso, servono anche loro.
Cmq le librerie che mi hanno detto che posso/devo usare sono
String.h
Stdio.h
Stdlib.h
Fcntl.h
Sys/stat.h
Sys/types.h
Unistd.h
Sys/socket.h
Netinet/in.h
Arpa/inet.h
ed ovviamente pthread.h
Via, inizio a capirci qualcosa dai!! Grazie!!
Per la cronaca ho risolto: bisogna compilare con gcc sotto FreeBSD.
Il comando è
gcc -o NomeOutput NomeProgramma.c -Wall -lpthread
con -Wall maiuscolo e -lpthread per poter usare le relative librerie.
Grazie a tutti!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.