Ho un progetto C++ (g ++/raw Makefile) progettato per linux, ho usato per collegare staticamente tutto ciò che ha funzionato bene per secoli. Ora voglio creare binari sia collegati staticamente che dinamicamente. Il seguente comando è usato nel mio Makefile per costruire la libreria dinamica (ad esempio libtest):come utilizzare la mia libreria dinamica in linux (Makefile)
$ (CXX) -shared -Wl, -soname, libtest.so.1 -o libtest.so.1.0.0 $ (LIBTEST_OBJS)
l'uscita è libtest.so.1.0.0 che ha il modo citarne libtest.so.1
ho trovato almeno un link libtest.so simbolica -> libtest.so.1.0.0 è necessario collegare il mio programma client che effettivamente utilizza la libreria libtest.so.1.0.0 generata sopra.
Qui la mia domanda è se voglio costruire il mio software, qual è il modo standard di gestire il collegamento simbolico sopra? Chiaramente non voglio questa roba in più nella mia directory dei sorgenti, ma è necessario per costruire il mio client binario, dovrò crearlo come collegamento temporaneo per costruire il client e poi rimuoverlo quando sarà finito? o devo creare una directory per ospitare la libreria .so di generare e i suoi collegamenti e lasciare tutto lì finché non faccio "make install" per installarli in altre directory specificate? Sarà bello per ora qual è il modo standard per farlo.
O forse il modo in cui generi librerie è errato? devo semplicemente generare libtest.so (come libreria reale, non un collegamento) per collegare il mio eseguibile, quindi rinominare la libreria e creare tali collegamenti quando si esegue `` make install ''?
qualsiasi input sarà apprezzato. :)
+1 L'uso di libtool renderà più semplice quando alla fine deciderete di portarlo da Linux a qualcos'altro - libtool gestisce tutti i problemi dipendenti dalla piattaforma delle librerie condivise. –