Precedente :: Successivo |
Autore |
Messaggio |
Federico Calboli
Registrato: 01/04/07 18:57 Messaggi: 430
|
Inviato: Lun 17 Dic 2012 19:25 Oggetto: donde pippa sta GSL? |
|
|
Nobili Sontuosita` Vostre,
ho il seguente problemuzzo. Sto aiutando un amico a mettere in piedi un pacchetto per R (che voi sapete gia` che cosa sia, ma lo ricordo a scanso di equivoci: http://www.r-project.org/), che fa un linking con del codice in C++, la cui sorgente e` chiaramente nel pacchetto ipso.
Ora, il pacchetto necessita di nientepopodimeno che GSL, BLAS e pure OPENMP (per farsi del male).
Andando un pezzo per volta, pare che per fare fungere il tutto in un utente quello che sia (e ha da fungere Linux/OSX/Win) si ha da fare un makevars. Ok, fino a qui ci si sta. Il problema e` che so che nel makevars si deve specificare donde cippa siano GSL e cose belle. Ora io so che per GSL (per esempio) ho da fa:
LIB_GSL=/path/to/gsl/installation/
PKG_LIBS=-lgsl -lgslcblas -L${LIB_GSL}/lib
PKG_CPPFLAGS=-I$(LIB_GSL)/include
il mio problema e` che non voglio un hardocde di /path/to/gsl/chetivenga in quanto mi sa che non sia nello stesso posto per tutti. Esiste un modo *semplice* di dire in un makefile: 'trova dove cazzo stanno ste librerie e non sfasciare le balle che non ne ho piu` da dare'?
Con trepida riconoscenza,
F |
|
Top |
|
|
Davide Bolcioni Ospite
|
Inviato: Mar 18 Dic 2012 06:37 Oggetto: donde pippa sta GSL? |
|
|
On Monday, December 17, 2012 06:09:52 PM Federico Calboli wrote:
Citazione: | Andando un pezzo per volta, pare che per fare fungere il tutto in un utente
quello che sia (e ha da fungere Linux/OSX/Win) si ha da fare un makevars.
Ok, fino a qui ci si sta. Il problema e` che so che nel makevars si deve
specificare donde cippa siano GSL e cose belle. Ora io so che per GSL (per
esempio) ho da fa:
LIB_GSL=/path/to/gsl/installation/
PKG_LIBS=-lgsl -lgslcblas -L${LIB_GSL}/lib
PKG_CPPFLAGS=-I$(LIB_GSL)/include
|
Per quanto riguarda Linux, il problema va riformulato in funzione della
fatidica domanda ... quale GSL ? Se ad esempio è la GSL installata con RPM o
deb, la risposta è facile:
PKG_LIBS=-lgsl -lgslcblas
PKG_CPPFLAGS
perchè la libreria deve stare dove stanno le altre, in /usr/lib o in
/usr/lib64, che è il posto dove -l sa di doverle cercare.
Se invece è una versione di GSL installata in ~miocugino/gsl, evidentemente
non si può sapere e bisogna indicarlo
LIB_GSL=~miocugino/gsl
PKG_LIBS=-lgsl -lgslcblas -L${LIB_GSL}/lib
PKG_CPPFLAGS=-I$(LIB_GSL)/include
potrebbe anche esserci come parte dell'installazione di GSL uno script di
shell, gsl-config, le cui opzioni corrispondono a quello che ti serve, ovvero
PKG_LIBS=$(gsl-config --libs)
PKG_CPPFLAGS=$(gsl-config --cflags)
ma perché ciò sia utile occorre che gsl-config sia in una directory che fa
parte del PATH, e nel caso di ~miocugino non è detto.
Segnalo che ho parlato di "installazione", cioè mio cugino deve aver eseguito
la fatidica combinazione "configure && make && make install" con successo. Il
valore giusto per LIB_GSL è sempre una directory tale che
${LIB_GSL}/lib/libgsl.so
corrisponda alla libreria dinamica che ti interessa (di solito è un symlink).
Per quanto riguarda Mac OSX, fornisco iSuggerimenti solo a fronte di un i30%
sugli iUtili.
Sulle piattaforme legacy che sottopongono a inutili vessazioni l'acquirente
LIB_GSL probabilmente comincia con C: e ha le barre all'indietro.
Davide Bolcioni
_________________
There is no place like /home. |
|
Top |
|
|
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|