【Python填坑记】树莓派运行python3代码,提示openssl版本过低,附升级openssl填坑过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近需要在树莓派上部署一些python代码,于是给树莓派升级安装了python3.9.7版本,但执行代码碰到openssl 版本太低的问题,致使python无法正常运行,这里把填坑日志记录一下,希望可以帮到需要的人。


一、openssl是什么?

openssl是一个安全套接字层密码库,囊括主要的密码算法、常用密钥、证书封装管理功能及实现ssl协议。OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库libssl、应用程序命令工具以及密码算法库libcrypto。

二、升级openssl的常规操作

使用管理员账户登录后,按如下常规动作执行,

wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar zxf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl 
make -j4 && make install
openssl version

如果顺利完成后显示OpenSSL 1.1.1g 21 Apr 2020,恭喜你!
如果不成功,也没关系,下面就是填坑宝典送给你。

三、升级openssl填坑过程

1、去官网下载最新版本,或wget下载也行 http://www.openssl.org

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

如果wget报错,就在浏览器输入https://www.openssl.org/source/openssl-1.1.1g.tar.gz下载即可。并手工解压到以下目录/home/pi/openssl-1.1.1g、解压并进入该目录,ls看显示目录内容:

cd /home/pi/openssl-1.1.1g
ls

2、进入解压目录后执行:

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
./config --prefix=/usr/local/openssl shared

sudo make depend
sudo make
sudo make install

用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。

3、新建目录
sudo mkdir /usr/local/openssl

4、配置使用新版本:
sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/openssl/include/openssl /usr/include/openssl

5、更新动态链接库数据
sudo sh -c “echo ‘/usr/local/ssl/lib’ >> /etc/ld.so.conf”

6、重新加载动态链接库
sudo ldconfig -v

7、openssl version

报错:

openssl: /usr/lib/arm-linux-gnueabihf/libssl.so.1.1: version `OPENSSL_1_1_1' not found (required by openssl)
openssl: /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1: version `OPENSSL_1_1_1' not found (required by openssl)

备份文件

sudo mv /usr/lib/arm-linux-gnueabihf/libssl.so.1.1 /usr/lib/arm-linux-gnueabihf/libssl.so.1.1.old
sudo mv /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1 /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1.old

复制新编译的文件

sudo cp /usr/local/openssl/lib/libssl.so.1.1 /usr/lib/arm-linux-gnueabihf/
sudo cp /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/arm-linux-gnueabihf/

再次执行显示版本

openssl version
OpenSSL 1.1.1g  21 Apr 2020

总结

openssl是树莓派的底层库,虽然麻烦但还真跳不过,也不知道新版的树莓派系统解决这个问题没?希望大家填坑顺利,不要耽搁大家太多时间(折腾了我一个下午,各种搜索,测试,才搞定)。

猜你喜欢

转载自blog.csdn.net/popboy29/article/details/130769588