Il bit rilevante in quella pagina è
Quando lo script di configurazione viene eseguito senza parametri, la parte restante del processo userà /usr/local/include/soci
come destinazione predefinita per i file di intestazione soci e /usr/local/lib
come destinazione predefinita per file di libreria
Ora/usr/local/include dovrebbe essere nella vostra predefinito percorso di inclusione (ad esempio, provare qualcosa di simile gcc -c -v -x c++ /dev/null -o /dev/null
per vedere la lista la tua installazione usi) e in modo da poter includere questi usando
#include <soci/soci.h>
#include <soci/soci-mysql.h>
Quindi è necessario aggiungere le librerie al passaggio del collegamento. Sembra che avrete entrambe le versioni statiche e condivise delle librerie. Dovrai aggiungere -lsoci_core -lsoci_mysql
al tuo passaggio di collegamento; tuttavia, se ciò non dovesse funzionare, sarà necessario specificare/usr/local/lib come directory di ricerca, ovvero -L/usr/local/lib -lsoci_core -lsoci_mysql
. (È probabile che sia già presente, ma è possibile vedere utilizzando gcc -print-search-dirs
.) Tuttavia, il problema è che se si sta utilizzando la versione condivisa e/usr/local/lib non si trova nel percorso di ricerca della libreria delle distribuzioni (vedere/etc/ld.so.conf e/o /etc/ld.so.conf.d/*) quindi non sarà in grado di trovare la libreria condivisa in fase di runtime. Avrai bisogno di un hard-code nel percorso della libreria con l'interruttore linker -rpath
o aggiungi/usr/local/lib al percorso di ricerca a livello di sistema come prima o nel tuo ambiente (variabile LD_LIBRARY_PATH
). Non sono sicuro di quale sia il modo migliore per farlo - Suggerirei -rpath
per evitare di modificare il sistema in generale, anche se se stai costruendo molte librerie in/usr/local/lib, potrebbe essere logico aggiungere esso.
Avete effettivamente eseguito 'make install'? Non è necessario copiare i file di intestazione nella directory del progetto. – chrisaycock
Ho eseguito quel comando.Se non copio quei file il compilatore dà un errore dicendo che i file soci.h e soci-mysql.h non sono stati trovati. Ho appena copiato quanto segue da un esempio sulla documentazione: [codice] #include "soci.h" #include "soci-mysql.h" [/ code] ma non ha funzionato, il compilatore ha detto che quei file non Esistono, quindi ho provato a copiarli dal pacchetto soci. – NeDark