最近在学习 libevent 时报错,如下:
./server: error while loading shared libraries: libevent_core-1.4.so.2: cannot open shared object file: No such file or directory
查找系统目录,在 /usr/local/lib 中确实找到了该文件,但是为什么可执行程序没有发现呢?经过查找资料,发现命令 LD_DEBUG 可以解决该问题。
通过执行命令:
LD_DEBUG=libs ./test.o -v
可以获取 test.o 查找 .so 文件的顺序,可以发现在其查找的目录中没有包含 so 文件实际目录,所以只需要用 ln -s 建立软连接即可,解决问题!
拓展:
LD_DEBUG 是 glibc 中的 loader 为了方便自身调试而设置的一个环境变量。通过设置这个环境变量,可以方便的看到 loader 的加载过程。
(SAW:Game Over!)