2014-07-01 25 views
6

Io usoCome posso compilare il programma Mongodb-c-driver?

gcc -o mongotest mongotest.c $(pkg-config --cflags --libs libmongoc-1.0) 

per la compilazione MongoDB codice C driver, quindi

LD_LIBRARY_PATH=/usr/local/lib ./mongotest 

per la marcia.

Se provo senza LD_LIBRARY_PATH =/usr/local/lib Ho

./mongotest: error while loading shared libraries: libmongoc-1.0.so.0: cannot open shared object file: No such file or directory 

Come posso eseguire il programma senza LD_LIBRARY_PATH =/usr/local/lib, è corretto fare così? Come posso eseguire il debug dei programmi del driver mongodb c?

risposta

9

Il percorso /usr/local/lib deve essere in /etc/ld.so.conf o in uno dei file nella directory /etc/ld.so.conf.d/. Così la biblioteca mongoc otterrà nella cache quando si invia il comando ldconfig come root.

È possibile verificare se biblioteca mongoc è nella cache del linker dinamico eseguendo questo comando

ldconfig -p | grep mongoc 

Se si tratta di sei al sicuro per eseguire il programma senza specificare esplicitamente LD_LIBRARY_PATH.

Un altro modo per verificare se il file eseguibile è collegato correttamente è ottenere le informazioni sul collegamento con il comando ldd. Stampa tutte le librerie collegate.

ldd mongotest 

Se si può vedere /usr/local/lib/libmongoc.so.[numbers] che significa che è collegato con mongoc biblioteca.

+0

Voglio solo dare oggetti di scena personali sia per ricollocare la domanda in modo appropriato e rispondere nel contesto corretto. Per gli altri osservatori, l'unico tag sulla domanda era solo "mongodb". –

+0

@NeilLunn ho avuto dubbi se devo rimuovere tag 'mongodb', se siete sicuri su di esso si prega di farlo. –

+0

Penso che il tag mongodb sia ancora pertinente in quanto riguarda la fonte del driver c. Questo è un forum di programmazione giusto? Sono solo contento che tu abbia visto questo come un problema in gran parte "C". E ha risposto e taggato in modo appropriato. Quindi tutto perfettamente valido. Buona risposta e maneggevolezza –

Problemi correlati