danieloneill / EpsolarServer

Epsolar Tracer-series logging/monitoring for Linux (and Raspberry Pi)
MIT License
31 stars 10 forks source link

libqhttpserver.so.0: cannot open shared object file #7

Closed se7enmilgram closed 4 years ago

se7enmilgram commented 4 years ago

After following build instructions, I get the following when attempting to manually launch:

root@raspberrypi:/home/pi/EpsolarServer# ./EpsolarServer ./EpsolarServer: error while loading shared libraries: libqhttpserver.so.0: cannot open shared object file: No such file or directory

Module exists here:

root@raspberrypi:/usr/local/lib# ls libqhttpserver.so libqhttpserver.so.0 libqhttpserver.so.0.1 libqhttpserver.so.0.1.0 python2.7 python3.7

Any help would be appreciated, looks like a very nice project.

danieloneill commented 4 years ago

Hi there. Can you try running "sudo ldconfig -v | grep qhttp" , see if libqhttpserver shows up (and try running the server again)? If that doesn't work, confirm that /usr/local/lib is in the /etc/ld.so.conf file and try it again.

On Wed, Nov 20, 2019, 07:30 se7enmilgram, notifications@github.com wrote:

After following build instructions, I get the following when attempting to manually launch:

root@raspberrypi:/home/pi/EpsolarServer# ./EpsolarServer ./EpsolarServer: error while loading shared libraries: libqhttpserver.so.0: cannot open shared object file: No such file or directory

Module exists here:

root@raspberrypi:/usr/local/lib# ls libqhttpserver.so libqhttpserver.so.0 libqhttpserver.so.0.1 libqhttpserver.so.0.1.0 python2.7 python3.7

Any help would be appreciated, looks like a very nice project.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/danieloneill/EpsolarServer/issues/7?email_source=notifications&email_token=ACQNLDJ3YAGSS6RT3WQPKLTQUVCYBA5CNFSM4JPTQNM2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4H2XVVLA, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACQNLDLTQJBLFDAVKC3T3ODQUVCYBANCNFSM4JPTQNMQ .

se7enmilgram commented 4 years ago

Huh, showed up in ldconfig -v, then confirmed /usr/local/lib is in the libc.conf file (in /etc/ld.so.conf.d/).

Tried running the daemon manually again and it just fired up (additional problem with the Exar driver, but I know how to fix that one). I guess I just never linked the .so after I built it.

angstyloop commented 10 months ago

Huh, showed up in ldconfig -v, then confirmed /usr/local/lib is in the libc.conf file (in /etc/ld.so.conf.d/).

Tried running the daemon manually again and it just fired up (additional problem with the Exar driver, but I know how to fix that one). I guess I just never linked the .so after I built it.

Even if LD_LIBRARY_PATH contains /usr/local/lib, and your shared object library ( the .so file ) is located there, you still might get an error like

error while loading shared libraries: <INSERT LIBRARY NAME>.so.0: cannot open shared object file: No such file or directory

If your linker cache /etc/ld.so.cache has not been rebuilt since the library was installed.

You can fix this by running ldconfig ( or sudo ldconfig, depending on the /etc directory permissions, which are likely only writeable by the root user ).

When successful, ldconfig prints no output. For more detailed output when running ldconfig, use the -v ( or --verbose ) flag.

If you have ever run into this error, and then it magically fixed itself while you were troubleshooting, it's probably because you followed someone's advice and did something like

ldconfig -v | grep <INSERT LIBRARY NAME>

to make sure the .so file was in a directory listed in LD_LIBRARY_PATH, like /usr/local/lib. It's a reasonable troubleshooting step to perform if you already confirmed that directory is included in /etc/ld.so.conf or /etc/ld.so.conf.d/*.conf, but ldconfig -v still runs ldconfig in verbose mode, which rebuilds /etc/ld.so.cache, and probably fixed your issue.

If your error mysteriously fixed itself after some time without you having to run ldconfig, then something else on your system must have run it since then - e.g. a startup script, a scheduled task, or installation scripts for other software.