linux安装openssl到指定目录

本文详细介绍了在嵌入式Linux环境下,如何编译多个版本的OpenSSL,包括准备工作、安装步骤、配置参数解析及测试方法。通过指定安装路径和静态库生成,实现与系统openssl的独立共存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

最近在做linux嵌入式开发,发现项目中不同分支均有一套openssl源码和静态库,并没有依赖系统(编译服务器)openssl头文件和静态库。

带着些许的疑问,思考得出:在嵌入式设备里,并不需要给系统安装openssl,只需要编译时连接openssl的静态库即可。不同的分支、平台编译openssl源码安装到指定分支目录,链接可执行程序时,链接上该目录上的openssl静态库即可。

结论:openssl可以安装n个,当然系统只能安装一个(系统目录下或配置环境变量的目录下只能有一个),其他目录想安装多少就可以安装多少,想安装什么版本就可以安装什么版本,和系统安装的不冲突。

检测系统是否安装openssl:

openssl version -a

检测系统是否安装openssl,本质就是去指定目录搜索是否有openssl可执行文件。

1、准备

  1. 下载OpenSSL,官网下载地址:https://www.openssl.org/source/
  2. 需要先安装zlib,这里很详细:http://myswirl.blog.163.com/blog/static/513186422007101410382259/

2、安装

以openssl-1.0.2m.tar.gz为例:

1、解压OpenSSL

tar -zxf openssl-1.0.2m.tar.gz
cd openssl-1.0.2m

2、配置openssl安装参数

./config no-shared --prefix=/home/my/share/demo/openssl/local --openssldir=ssl

config 配置安装参数的可执行文件;
no-shared 指定生成的openssl库为静态库,即生成libcrypto.a和libssl.a;(默认生成动态库)
–prefix 指定安装路径; 默认是’/usr/local/ssl’ ,这里貌似只能为绝对路径;(./和…/测试不好使)
–openssldir 配置参数路径,在只需要头文件和静态库时,感觉意义不大;(安装时这里的路径是在–prefix指定路径的子目录下的,可能和系统或版本有关系)

配置完成后,最好检查下MakeFile文件内,安装路径是否已修改为–prefix指定的路径。

3、编译openssl

make

4、测试openssl

make test

此步可省略,建议最好测试下。

5、安装openssl

make install

安装完成,显示如下:
在这里插入图片描述
bin目录下有openssl可执行文件,若执行刚才安装的openssl版本,可cd到bin目录下,执行./openssl(直接执行openssl为系统openssl)
include下有openssl文件夹,openssl文件夹为相关的头文件;
lib目录下有libcrypto.a和libssl.a静态库;
ssl文件夹为–openssldir=ssl指定文件夹;

重要事情说三遍:
优先阅读官方安装说明文档;
优先阅读官方安装说明文档;
优先阅读官方安装说明文档;

参考资料:
https://blog.csdn.net/chengqiuming/article/details/70139714
https://blog.csdn.net/shiyong1949/article/details/78212971?locationNum=10&fps=1
http://myswirl.blog.163.com/blog/static/513186422007101410149578/
https://blog.csdn.net/qq_37990044/article/details/79198623
https://blog.csdn.net/stelalala/article/details/9673385
https://www.linuxidc.com/Linux/2017-09/147117.htm

### 将 MySQL 安装并配置到指定目录Linux 系统上将 MySQL 安装至自定义目录涉及几个关键步骤,包括下载安装包、解压、配置路径以及初始化数据库实例。以下是具体方法: #### 下载与解压 首先需要获取适合当前系统的 MySQL 版本的 tar.gz 文件。可以通过官方站点或其他可信资源下载。 ```bash wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.xx-linux-glibc2.12-x86_64.tar.xz tar xf mysql-8.0.xx-linux-glibc2.12-x86_64.tar.xz mv mysql-8.0.xx-linux-glibc2.12-x86_64 /your/custom/path/ ln -s /your/custom/path/mysql-8.0.xx-linux-glibc2.12-x86_64 /usr/local/mysql ``` 上述命令会把解压缩后的 MySQL 移动到 `/your/custom/path` 并创建软链接以便于访问[^2]。 #### 创建用户和组 为了安全起见,建议为 MySQL 创建专用用户和组。 ```bash groupadd mysql useradd -r -g mysql -s /bin/false mysql chown -R mysql:mysql /your/custom/path/mysql-8.0.xx-linux-glibc2.12-x86_64/ ``` 这一步确保只有特定用户能够操作 MySQL 数据库文件[^4]。 #### 初始化数据库 进入新位置下的 `bin` 目录执行初始化脚本。 ```bash cd /usr/local/mysql/bin ./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/your/custom/data/dir ``` 这里指定了基于目录 (`--basedir`) 和数据存储目录 (`--datadir`) 参数以适应新的布局需求[^1]。 #### 修改配置文件 my.cnf 编辑或新建 MySQL 配置文件 `/etc/my.cnf`, 添加如下内容: ```ini [mysqld] basedir = /usr/local/mysql datadir = /your/custom/data/dir socket = /tmp/mysql.sock port = 3306 pid-file= /var/run/mysqld/mysqld.pid log-error=/var/log/mysqld.log ``` 此部分明确了程序运行的基础路径和其他重要选项的位置关系[^5]。 #### 启动服务 确认一切无误之后即可尝试启动服务, 如果系统采用 systemd 可通过下面指令实现自动加载功能. ```bash cp support-files/mysql.server /etc/init.d/mysql chmod +x /etc/init.d/mysql chkconfig --add mysql service mysql start systemctl enable mysqld.service ``` 最后验证是否成功开启:`netstat -tulnp | grep :3306`. --- ### 注意事项 如果遇到权限错误或者找不到某些依赖项的情况,则需检查 SELinux 设置状态或是重新编译缺少组件的部分模块[^3]. ```python import pymysql.cursors connection = pymysql.connect(host='localhost', user='root', password='', database='testdb', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: sql = "SELECT * FROM users" cursor.execute(sql) finally: connection.close() ``` 以上 Python 脚本展示了如何利用 PyMySQL 库连接本地已定制好的 MySQL 实例进行简单查询操作.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值