Newsgroup: it.comp.os.linux.development
Titolo: Imparare le basi della compilazione in ambiente Linux - make e altri tools

Ciao a tutti,
qualche giorno fa ho avuto un problema di compilazione che mi ha fatto 
penare parecchio. Si trattava di un software scientifico (Meep, 
http://ab-initio.mit.edu/wiki/index.php/Meep
). Il comando make ad un 
certo punto si fermava con messaggi di errore che si riferivano al 
linkaggio a librerie statiche (i messaggi di errore li incollo alla fine 
di questo mio).
Lo ho risolto in parte domandando allo help-desk del cluster su cui sto 
lavorando, in parte facendo dei tentativi un po' casuali (cercando 
naturalmente di indovinare quale potesse essere il problema e agendo di 
conseguenza).
Mi e' venuto in mente che potrebbe essere utile, per velocizzare in 
futuro la soluzione di problemi simili, imparare qualcosa dei Gnu tools 
(per esempio, cosa e' esattamente un makefile, cosa c'e' dentro un file 
configure eccetera). Una possibilita' e' leggere direttamente i manuali 
che si trovano in rete. Ci sono anche dei libri che diano veramente una 
mano? Per esempio su Amazon ho trovato questo
http://www.amazon.com/dp/0596006101
e questo
http://www.amazon.com/Autotools-Practioners-Autoconf-Automake-Libtool/dp/1593272065
sono consigliabili?
Se poi qualcuno volesse dareun suo parere sul caso specifico, le cose 
che nonostante abbia risolto il problema vorrei ancora sapere sono le 
seguenti:
1) questo programma Meep secondo il default doveva compilarsi con 
librerie statiche, invece insisteva a compilarsi con lirerie shared - e 
persisteva anche se io avevo messo nel comando configure l'opzione 
--enable-static
In che parte del file configure la cosa e' controllata?
2) Da uno dei messaggi d'errore ho avuto l'impressione che 
l'installazione avesse bisogno di permesso in scrittura non solo nella 
directory dove il programma doveva essere installato, ma anche nelle 
directory dove risiedono le librerie. E' possibile che sia cosi'? E se 
si', e normale e sensato?
Grazie per eventuali risposte,
Giovanni
Seguono messaggi di errore
*** Warning: Linking the shared library 
libmeep.la
 against the
*** static library /lrz/sys/libraries/hdf5/1.6.10_serial/lib/libhdf5_hl.a
is not portable!
*** Warning: Linking the shared library 
libmeep.la
 against the
*** static library /lrz/sys/libraries/hdf5/1.6.10_serial/lib/libhdf5.a is
not portable!
*** Warning: Linking the shared library 
libmeep.la
 against the
*** static library /lrz/sys/libraries/hdf5/szip_2.1/lib/libsz.a is not
portable!
ar: /lrz/sys/libraries/hdf5/1.6.10_serial/lib/.libs/libhdf5_fortran.a: No
such file or directory
make[3]: *** [
libmeep.la
] Error 9
make[3]: Leaving directory `/home/cluster/pr26he/lu64qig/meep-1.1.1/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/cluster/pr26he/lu64qig/meep-1.1.1/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/cluster/pr26he/lu64qig/meep-1.1.1'
make: *** [all] Error 2

 si', e normale e sensato?
Allora le tue directory devono avere il permesso di esecuzione (la x) 
altrimenti non ci accedi. Devi essere root quando devo installare il 
programma con make install, altrimenti per compilare ti basta l'utente 
normale.
Nicola.
-- 
chi va pian va san e va lontan

 Il Makefile non e' altro che
(cut)
Grazie per le risposte. La cosa che mi preme di piu' e' avere un buon 
riferimento da dove imparare le basi in maniera sistematica; e 
preferibilmente sotto forma di libro. Per esempio che l'installazione 
avesse bisogno di permesso nelle directory dove risiedono le librerie 
non lo so, me lo sono solo immaginato, sarei molto piu' contento se 
fossi in grado di determinarlo con esattezza. In rete per esempio si 
trova questa trattazione
http://tinf2.vub.ac.be/~dvermeir/manuals/make-3.71/make_toc.html
ma io con un libro mi troverei piu' a mio agio. Hai suggerimenti per caso?

 riferimento da dove imparare le basi in maniera sistematica; e
]zac[
Metodo sconsigliabile, visto l'ampiezza e la diversità degli argomenti su 
cui ci si imbatte.
Una buona soluzione è quella di affrontare un punto per volta, prendendo per 
esempio progetti/documentazione di altri il più semplici possibili che 
abbiano affrontato lo stesso problema, una volta risolto il punto spaziare 
un po' oltre il punto risolto per approfondire la conoscenza.
Un aiuto possono essere anche i vari sistemi di sviluppo 
integrati/automatici tipo kdevelop, ecplips, ecc. che possono generare 
automaticamente le configurazioni richieste, cosi intanto non si rimane 
bloccati, e poi si può cercare di capire come funzionano le configurazioni 
generate automaticamente.
In sintesi, conoscere e fare a mano un po' di tutto di tutto è ormai anche 
in linux una impresa disperata.