PDA

View Full Version : [C/C++] gnu scientific library


ndakota
08-04-2009, 13:49
salve, ho letto un articolo su questa libreria. l'articolo dedica due righe alla preparazione sotto linux, basta usare la solita procedura .configure, make, make install.. io uso codeblocks e ancora non riesco a farle funzionare.. ho la mia cartella gsl-1.0 che a questo punto dovrebbe essere a posto però dove la metto?? grazie a chi risponderà :)

Torav
08-04-2009, 14:02
solitamente se non hai passato al configure qualche parametro particolare (tipo --prefix=/qualche/dir) una volta che dai il make install lui ti mette le librerie che devi linkare in /usr/lib o qualche altra cartella che sta nei path che il compilatore controlla normalmente. Che errore ti dà il compilatore?

ndakota
08-04-2009, 14:09
mi da undefined reference a tutte le chiamate delle funzioni della gsl

ndakota
08-04-2009, 14:18
devi linkare esplicitamente con gcc naturalmente... in code blocks ci sarà qualche opzione analoga per specificare il nome del fil .a da passare...

lo faccio ma evidentemente nel posto sbagliato :(

Torav
08-04-2009, 14:27
in teoria dovresti avere tra le opzioni del linker qualcosa come (se la lib è libgsl.a) -lgsl
magari controlla dove il make install ti ha messo le librerie!

BrutPitt
08-04-2009, 17:47
Pero' se l'hai inserita correttamente dovrebbe dirti che non trova la libreria... non darti "undefined external link" ;)

Se devi inserire la libreria in code::block:
Menu Project->Preferences

Linguetta (tag) BuildTargets -> Pulsante BuildOptions

Linguetta (tag) Linker Settings -> e nella sezione Link Libreries aggiungi SOLO gsl

Eventualmente, se devi inserire anche il "path"
Seleziona il tag "Search directories" con il riferimento al "linker".

(Puoi farlo anche esplicitamente in "other linker options", aggiungendo
-lgsl
-L/usr/miaCartella
... la prima elle minuscola e la seconda maiuscola ;) )


Ancora una cosa.... se stai usando un linux a 64bit, e' possibile che la cartella di default per le librerie sia /usr/lib64.
Al limite basta un link nella cartella /usr/lib a libgsl.a