一:问题描述:
1. 用C语言实现了一个动态库:xxx.so。nginx lua中使用ffi调用该动态库文件
2. 将动态库拷贝到openresty安装目录下的lualib路径下
3. 显示如下错误:
xxx.so: cannot open shared object file: No such file or directory
stack traceback:
coroutine 0:
[C]: in function 'load'
二:解决过程:
1. 查找nginx程序依赖的动态库
[root@localhost nginx]# ldd /path/to/openresty/nginx/sbin/nginx
linux-vdso.so.1 => (0x00007ffe841d4000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f7b5d31d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7b5d101000)
...
2. 找出动态库的存放路径
[root@localhost nginx]# find / -name libselinux.so.1
/usr/lib64/libselinux.so.1
3. 将自己实现的xxx.so文件拷贝到该路径
[root@localhost nginx]# cp ../lualib/xxx.so /usr/lib64/
4. 再次执行程序,问题解决