安装完毕 PCRE 和 swig 之后,执行
swig -version
发现报错 如下:
swig: error while loading shared libraries: libpcre.so.1:
cannot open shared object file: No such file or directory
亲测的一个解决方法:(普通用户,不使用 sudo root 权限)
思路: 在服务器中找到 libpcre.so.1 相关文件,copy 到 swig 的安装 bin 目录下; 然后 把该目录 加入
环境变量中即可;
- 我的解决示例过程如下:
# 在自己用户目录下 | 或者 root 根目录下 进行全局搜索
find | grep libpcre
- 可以找到 libpcre.so.1 ,如下:
# copy 到 swig bin 目录下
cd ~/usr/swig/usr/local/bin/
cp /home/moli/anaconda3/pkgs/pcre-8.39-1/lib/libpcre.so* .
ls
ccache-swig libpcre.so libpcre.so.1 libpcre.so.1.2.7 swig
# 检查 so 库的依赖,发现 not found
ldd swig
linux-vdso.so.1 => (0x00007ffd0af18000)
libpcre.so.1 => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb250f01000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb250ceb000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb250921000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb250618000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb251283000)
# 临时解决方法:
export LD_LIBRARY_PATH=.
# 再检查发现 可行
ldd swig
linux-vdso.so.1 => (0x00007ffd1e1c6000)
libpcre.so.1 => ./libpcre.so.1 (0x00007f191f229000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f191eea7000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f191ec91000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f191e8c7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f191e5be000)
/lib64/ld-linux-x86-64.so.2 (0x00007f191f46c000)
# 然后编辑配置文件,把动态库路径添加到 .bashrc 中
vim ~/.bashrc
# 动态库 路径添加到 自己的环境变量
export LD_LIBRARY_PATH="/home/zhijian/usr/swig/usr/local/bin:$LD_LIBRARY_PATH"
# 使配置生效
. ~/.bashrc
- 然后再次检查 so 文件的依赖,的确OK
ldd swig
linux-vdso.so.1 => (0x00007ffc86d89000)
libpcre.so.1 => /home/zhijian/usr/swig/usr/local/bin/libpcre.so.1 (0x00007efc702dd000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007efc6ff5b000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007efc6fd45000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007efc6f97b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007efc6f672000)
/lib64/ld-linux-x86-64.so.2 (0x00007efc70520000)
最终 swig -version
正确执行:
# 查看 安装版本,错误消失
swig -version
SWIG Version 4.0.2
Compiled with g++ [x86_64-pc-linux-gnu]
Configured options: +pcre
Please see http://www.swig.org for reporting bugs and further information
# 查看帮助
swig -help
其它搜索到的可考虑的解决方法
大家安装的 pcre 版本可能不一致,那么 libpcre.so.n 会不一样,目测该方法也可考虑: