Newsgroup: it.comp.os.linux.development
Titolo: moduli e autotools

Ok, ci risiamo, eccoci al nuovo episodio della mia personale saga contro
gli autotools.
Allora, siccome l'applicazione che sto sviluppando deve interfacciarsi a
diversi dispositivi vorrei realizzare un layer unificato che in base al
dispositivo da usare carica un modulo e da esso estrae le funzioni da
usare.
Bene, prendo l'autobook e inizio a leggere il capitolo 18. Peccato che
arrivo ad un certo punto in cui mi dice:
 You must also arrange for the code of libltdl to be linked into your 
 application. There are two ways to do this: as a regular Libtool 
 library; or as a convenience library (see section Creating Convenience 
 Libraries). Either way there are catches to be aware of, which will be 
 addressed in a future release. Until libltdl is present on the average 
 user's machine, I recommend building a convenience library. You can do 
 that in `
configure.in
':
 AC_LIBLTDL_CONVENIENCE
 AC_PROG_LIBTOOL
 
 The main thing to be aware of when you follow these steps, is that you
 can only have one copy of the code from libltdl in any application. 
 Once you link the objects into a library, that library will not work 
 with any other library which has also linked with libltdl, or any 
 application which has its own copy of the objects. If you were to try, 
 the libltdl symbol names would clash.
 The alternative is to substitute `AC_LIBLTDL_CONVENIENCE' with
 `AC_LIBLTDL_INSTALLABLE'. Unfortunately there are currently many 
 potential problems with this approach. This macro will try to find an 
 already installed libltdl and use that, or else the embedded libltdl 
 will be built as a standard shared library, which must be installed 
 along with any libraries or applications that use it. There is no 
 testing for version compatibility, so it is possible that two or more
 applications that use this method will overwrite one anothers copies 
 of the installed libraries and headers. Also, the code which searches
 for the already installed version of libltdl tends not to find the
 library on many hosts, due to the native libraries it depends on 
 being difficult to predict. 
Cioè se creo delle librerie di convenienza non posso avere più di un
modulo collegato alla volta? E se invece faccio delle librerie
installabili rischio che mi si bombi tutto?
Ma come diavolo fanno allora tutte le grosse applicazioni piene di
plugin? Aprono e chiudono i plugin tutte le volte? Cosa posso fare se
volessi avere due plugin in contemporanea nella mia applicazine, uno che
faccia una parte e l'altro che svolga un compito diverso?

 faccia una parte e l'altro che svolga un compito diverso?
Guarda, non ho letto tutto che non ho tempo, ma:
se installi le librerie so con prefisso pkglib te le trovi in
${libdir}/myapp
Quindi qui ci puoi piazzare tutti i tuoi plugin. Apri quello/i necessario/i
con dlopen e importi i simboli che ti servono. Per sapere il path preciso
potresti fare dei #define e sostiture il percorso tramite autoconf.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! I Never Wanted To Be What They Told Me To Be
  		Fulfill My Fate Then I'll Be Free >!- Blind Guardian - Mordred's Song