Linux环境lib相关not found

Linux环境下的lib相关not found问题(服务器中环境版本问题)

1. /lib64/libstdc++.so.6: version ‘GLIBCXX_3.4.20’ not found

1.1获取配置文件

​ 首先来到我的百度网盘:

https://pan.baidu.com/s/1yumI6IFO72MCNPxn5ksXsQ?pwd=ymp5 提取码:ymp5 进行下载

1.2进行软连接设置

下载之后移动这个目录
cp libxxxx   /usr/lib64/

cd /usr/lib64/
删除软连接
mv libstdc++.so.6.0.21 libstdc++.so.6.0.21.back 
重新链接
ln -s libstdc++.so.6.0.21 libstdc++.so.6
libstdc++.so.6.0.21为你的库的名字,例如百度网盘里的

1.3查看新版本

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

2.libssl.so.1.1: cannot open shared object file: No such file or directory

2.1原因

这是由于 openssl 库的位置不正确或未安装 1.1 以上版本的问题

2.2安装编译openssl

2.2.1下载 openssl

#从官网下载

wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz

#腾讯云提供的镜像

wget https://mirrors.cloud.tencent.com/openssl/source/openssl-1.1.1g.tar.gz

2.2.2编译 openssl

tar -xvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
make && make install

使用 openssl version 来查看一下当前 openssl 版本号

2.3.1配置

echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig

如果不行,执行一下命令

mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib/openssl /usr/lib/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
在使用 PyInstaller 打包 Python 应用程序时,用户可能会遇到 `lib not found` 错误。这类错误通常表明 PyInstaller 无法找到某些必要的动态链接库(DLL)或共享库(如 `.so` 或 `.dylib` 文件),这可能导致打包后的程序无法正常运行。 ### 常见原因和解决方法 #### 1. 缺失依赖库路径 PyInstaller 有时无法自动检测到某些依赖库的路径,尤其是当这些库是通过非标准方式安装或位于非标准目录中时。可以通过手动指定库的路径来解决这个问题。 - 使用 `--paths` 参数指定额外的搜索路径: ```bash pyinstaller --paths=/path/to/your/lib your_script.py ``` 这将告诉 PyInstaller 在指定目录中查找模块和库[^1]。 #### 2. 动态链接库未正确包含 某些库(如 NumPy、OpenCV 等)可能依赖于外部的 DLL 文件。如果这些文件未被正确打包,程序在运行时会失败。 - 使用 `--add-binary` 参数手动添加缺失的库文件: ```bash pyinstaller --add-binary "/path/to/library.dll;." your_script.py ``` 这将把指定的二进制文件复制到打包后的目录中,确保运行时可以找到这些依赖项[^1]。 #### 3. 使用钩子文件(hook file) PyInstaller 使用钩子文件来识别模块的运行时依赖。某些第三方库可能缺少正确的钩子文件,导致依赖项未被正确识别。 - 创建自定义钩子文件并放置在 `hooks` 目录中,例如 `hook-yourmodule.py`,内容如下: ```python from PyInstaller.utils.hooks import collect_all datas, binaries, hiddenimports = collect_all('yourmodule') ``` 这样可以确保 PyInstaller 正确收集该模块的所有依赖项[^1]。 #### 4. 检查环境变量 在某些情况下,环境变量(如 `LD_LIBRARY_PATH` 或 `PATH`)可能未正确设置,导致运行时找不到库。 - 确保打包后的程序所在目录包含所有必要的库文件,或在代码中显式添加库路径: ```python import os import sys if getattr(sys, 'frozen', False): os.environ['PATH'] = sys._MEIPASS + os.pathsep + os.environ['PATH'] ``` 这将确保在冻结的应用程序中正确设置库路径[^1]。 #### 5. 使用虚拟环境 确保在干净的虚拟环境中进行打包,以避免系统环境中不必要的依赖干扰。 - 创建虚拟环境并安装所需的依赖: ```bash python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows pip install your_package ``` 然后在该环境中运行 PyInstaller,以确保只包含必要的依赖[^1]。 ### 示例:修复 OpenCV 的 lib not found 错误 如果使用 OpenCV 时遇到 `lib not found` 错误,可以尝试以下命令: ```bash pyinstaller --add-binary "/path/to/opencv_extra/testdata/cv/haarcascades;haarcascades" your_script.py ``` 此外,确保 OpenCV 的 DLL 文件(如 `opencv_world455.dll`)位于打包后的程序目录中,或使用 `--paths` 参数指定 OpenCV 的安装路径。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值