Ho scritto un piccolo programma che richiede alcune librerie che includono libboost_filesystem, libboost_program_options e libcurl.Il programma C++ compilato genera "impossibile aprire il file oggetto condiviso" su un altro sistema sebbene il file sia presente.
L'ho compilato sulla mia macchina di casa e ho portato il file binario al mio computer al lavoro per testarlo lì. Ma ci dà il seguente messaggio di errore quando si tenta di avviare il programma:
error while loading shared libraries:
libboost_filesystem.so.1.42.0: cannot
open shared object file
Ma quando cerco questo file vedo che esiste in: /usr/lib/libboost_filesystem.so.1.42.0
Ho sbagliato qualcosa durante la compilazione/collegamento del mio programma? Se sì, cosa devo fare per farlo funzionare su altre macchine?
Spesso trovo che 'ldd' può aiutarmi a scoprire cosa c'è che non va. Cosa dice 'ldd./Your_executable'? –
Da quello che hai detto, sembra che dovrebbe funzionare. Potrebbe esserci un conflitto tra 32 bit e 64 bit. Prova a eseguire 'file./Your_executable' e' file/usr/lib/libboost_filesystem.so.1.42.0' per verificare che le architetture corrispondano :) –
wow hai ragione. il programma è costruito come 32bit e la libreria presente è 64bit – tyrondis