swig: error while loading shared libraries: libpcre.so.1: cannot open shared object file 亲测解决方法

安装完毕 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 ,如下:

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 会不一样,目测该方法也可考虑:

5


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
根据提供的引用内容,你遇到的错误是"error while loading shared libraries: libmetis.so: cannot open shared object file: No such file or directory"。这个错误通常是由于缺少共享库文件引起的。为了解决这个问题,你可以按照以下步骤进行操作: 1. 首先,确认你的系统中是否确实缺少libmetis.so文件。你可以使用以下命令来查找该文件: ```shell find / -name libmetis.so ``` 如果找到了该文件,记下它的路径,然后跳过下面的步骤。 2. 如果你没有找到libmetis.so文件,那么你需要下载并安装该文件。你可以按照以下步骤进行操作: a. 访问提供的依赖文件下载地址,并下载与你的操作系统版本相对应的libmetis.so文件。 b. 将下载的文件上传到你遇到错误的主机上。你可以使用scp命令将文件从本地上传到主机上,例如: ```shell scp libmetis.so user@hostname:/path/to/destination ``` 其中,user是你的用户名,hostname是你的主机名,/path/to/destination是你想要将文件上传到的目标路径。 c. 在主机上,将libmetis.so文件移动到适当的位置。你可以使用以下命令将文件移动到/usr/lib或/usr/local/lib目录中: ```shell sudo mv /path/to/libmetis.so /usr/lib ``` 或者 ```shell sudo mv /path/to/libmetis.so /usr/local/lib ``` 3. 完成上述步骤后,重新运行你的程序,应该不再出现"error while loading shared libraries: libmetis.so: cannot open shared object file: No such file or directory"错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨理学AI

不必打赏,关注博主公众号即可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值