11
votes

When attempting to run a program I just compiled successfully, I get the following error:

./src/sensors/laser_scan_producer: error while loading shared libraries: liblcm.so.1: cannot open shared object file: No such file or directory

ls /usr/local/lib/liblcm* yields

/usr/local/lib/liblcm.la  
/usr/local/lib/liblcm.so  
/usr/local/lib/liblcm.so.1  
/usr/local/lib/liblcm.so.1.2.0

I have executed sudo ldconfig several times and added /usr/local/lib to LD_LIBRARY_PATH for the sake of redundancy.

This exhausts the list of answers I've seen whilst grepping around stackOverflow.

Anyone spot the problem?

2
Is it possible the linker is looking in /usr/local/lib64/?Chris Hutchinson
ldconfig uses the file /etc/ld.so.conf. You can add /usr/local/lib to that file, re-run ldconfig and try again.Some programmer dude

2 Answers

15
votes

Thank you to @Joachim_Pileborg:

ldconfig uses the file /etc/ld.so.conf. You can add /usr/local/lib to that file, re-run ldconfig and try again

Doing so fixed the problem, although I find it odd that /usr/local/lib wouldn't have been checked in the natural course of things.

1
votes

I found a working solution for both /usr/local/lib and /usr/local/lib64 directories in this commit.

First run this command as root to add those directories.

tee /etc/ld.so.conf.d/local.conf <<EOF
/usr/local/lib
/usr/local/lib64
EOF

Next run as root:

ldconfig