Linux 编译安装 openssl库

2023-11-08

Linux 编译安装 openssl库


如果是不需要特定版本的openssl库的安装非常简单。直接sudo apt install opensll即可。而且像Ubuntu这种应该是自带了openssl库的。运行openssl version -a查看版本。
在这里插入图片描述
当这个默认版本不满足我们的使用要求时,我们需要自己编译安装需要的版本。方法如下。

1、下载openssl源码


openssl官网链接。

找到需要下载的版本:
在这里插入图片描述

这里我需要下载的版本是openssl-1.0.0c。把下载压缩包放到一个你能找得到的路径下,然后进行解压。

2、编译安装


  • config配置

    配置编译参数。这里的一些参数说明可以在githubopenssl上找到。

    参数列得很全,但是使用说明并不太详细。建议直接百度搜。github上的虽然不详细,但是都是对的,百度搜出来的一些参数使用是错误的。这里我只编译Linux共享库,所以只加了一个shared参数。安装路径为默认的/usr/local/ssl,不进行设置。

    我使用的是wsl进行编译的。(后面我还会用交叉工具链进行再次编译,这个使用wsl不再那么好使了,貌似是因为wsl不支持32位程序。然后网上也有解决方法,简单尝试后仍然没办法编译。后面转虚拟机了)

    $ ./config shared
    

在这里插入图片描述

出现Configure for linux-x86_64应该就是配置成功了。

  • make编译

    配置好编译选项后,运行make,一直等着就好了。应该是没有什么问题的。

    $ make
    

  • make test测试

    make编译成功后,可以进行make test。我这里测试存在两个错误,查资料说是bug,然后就没管了。

  • make install安装

    这里需要用root权限,加sudo进行安装。否则会报错。

    # sudo make install
    

    运行仍然存在错误。搜了一下,删除一个相关文件就好了。

    # sudo mv /usr/bin/pod2man /usr/bin/pod2man_cp
    

    安装完成。这里还没有把库加到系统默认路径下,所以gcc 是没有办法直接使用的。如果要使用的话,通过-L来指定库libssl.so.1.0.0libcrypto.so.1.0.0的路径。

3、创建软链接

下图打错了两个单词:opensll。修改为openssl

此时版本已经切换成我们自己编译安装的版本了。如果要切回去的话,将/usr/bin/openssl_cp备份恢复即可。

4、gcc使用openssl库

# sudo vim /etc/ld.so.conf

/usr/local/openssl/lib加到最后面的新行。然后执行

# sudo ldconfig

这时在链接选项后添加LDFLAGS = -lssl -lcrypto即可将openssl库链接进来。

5、交叉编译openssl

openssl支持交叉编译配置。在github的教程中有讲到如何使用--cross-compile-prefix=

我是通过在虚拟机ubuntu18.04上进行交叉编译的。工具链是arm-himix100-linux

由于是交叉编译,所以需要设置交叉编译配置项,并且不要安装在默认位置了。
先clean一下,不然要报错。

$ make clean
$ ./config no-asm shared --prefix=/home/river/Project/IPC/cross_compiling --cross-compile-prefix=arm-himix100-linux-
$ make
$ sed -i "s/-m64//g" Makefile
$ make
# sudo make install

过程中会报一个关于-m64的错误。直接删除Makefile中的-m64

no-asm: 不使用汇编代码。

–prefix: 为openssl安装路径。


在这里插入图片描述
编译安装成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 编译安装 openssl库 的相关文章

  • 点击界面没有出现

    我决定添加一个点击界面并在我的代码中使用它 但我能够得到它的状态 sudo ip f link tuntap add tap10 mode tap sudo ip link set tap10 up 之后当我执行 ip link 时 tap
  • 使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

    非常简单的例子是 city print city 我期望输出是 但实际上输出是相反的字符串 字母看起来有点不同 因为它们有开始 中间和结束形式 我无法将其粘贴到此处 因为复制粘贴会再次更正字符串的顺序 如何在 Linux 终端上正确打印阿拉
  • 如何在C程序中直接改变显存映射来绘制像素(无需库函数)

    是否可以通过使用 C 程序更改 RAM 中屏幕 视频即监视器 内存映射中的值来显示黑点 我不想使用任何库函数 因为我的主要目标是学习如何开发简单的操作系统 我尝试访问起始屏幕内存映射 即 0xA0000 在 C 中 我尝试运行该程序 但由于
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • 为什么“script”命令会生成 ^[ 和 ^M 字符以及如何使用 vim 搜索和替换删除它们?

    在linux上 使用bash shell 当我使用script命令时 生成的文件称为typescript 当我用 vim 打开该文件时 每一行都包含 M字符 并且有几行 由于我的彩色命令提示符 包含一个字符 我想用任何东西替换这些字符 从而
  • bash "&" 不打印 "[1]+ Done "

    我在 bashrc 中调用一个脚本来打印打开终端时收到的新消息数 我希望该调用在访问网络时是非阻塞的 有时需要几秒钟 这意味着我无法使用终端直到完成 但是如果我输入 mailcheck 在我的 bashrc 中 它工作正常 但然后打印一个空
  • VSCODE 在 Linux 上不适用于我

    刚刚了解 VSCODE 很高兴尝试一下 我下载 解压并运行可执行文件 我得到 Code 2183 0429 201254 ERROR browser main loop cc 170 Running without the SUID san
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • 将 bash 脚本作为守护进程运行

    我有一个脚本 它每 X 次运行我的 PHP 脚本 bin bash while true do usr bin php f my script php echo Waiting sleep 3 done 我怎样才能将它作为守护进程启动 要从
  • 如何从命令行执行 PHP 代码?

    我想执行单个 PHP 语句 例如if function exists my func echo function exists 直接使用命令行 无需使用单独的 PHP 文件 这怎么可能 如果您要在命令行中执行 PHP 我建议您安装phpsh
  • 从sourceforge下载最新版本

    我正在尝试在 bash 脚本中从 Sourceforge 下载最新版本的graphicsmagick wget q https sourceforge net projects graphicsmagick files latest dow
  • 有没有办法让 Linux CLI IO 重定向持久化?

    我有多个管道命令 如下所示 find options grep options xargs grep options 它们中的每一个都可能产生我不感兴趣的错误 权限错误 文件名空格错误等 因此 我想将所有错误重定向到 dev null 我知
  • ubuntu 中的 echo -e 选项不起作用

    我的同事使用Ubuntu 我使用openSUSE 我们使用相同的makefile编译相同的源代码 我的环境运行良好 但我的同事不能 总是输出无法识别 e选项 我们检查makefile 只发现echo命令使用 e option Ubuntu的
  • 如何更改 Kubernetes 中的文件系统观察程序限制 (fs.inotify.max_user_watches)

    我在用着pm2 https github com Unitech pm2查看保存我的应用程序服务器的 NodeJS 程序源代码的目录 该程序在 Kubernetes 集群中运行 但是 我收到此错误 ENOSPC System limit f
  • 在 Dockerfile 中切换到 root 用户

    我运行了这个命令 docker pull mcr microsoft com mssql server 2019 latest 然后我创建了一个 dockerfile 来使用此容器映像作为另一个容器的基础映像 escape FROM mcr
  • 如何修复 /usr/bin/env 参数处理?

    我遇到了一个奇怪的问题 usr bin env 我设计了一个简单的脚本来显示问题 该脚本使用 Ruby 编写 但使用 Python 编写的类似脚本也会发生同样的情况 这是脚本 usr bin env ruby p ARGV 还有一个没有 u
  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati

随机推荐

  • 【数据库系统】--【3】DBMS数据组织

    DBMS数据组织 01关系表的数据组织 02索引的数据组织 03元数据的数据组织 04数据组织的优化 01关系表的数据组织 02索引的数据组织 03元数据的数据组织 04数据组织的优化 小结 关系表的数据组织 索引的数据组织 B树索引 HA
  • 华为AP胖瘦模式转换步骤

    华为AP胖瘦模式转换步骤 以AP3010DN AGN为例 瘦模式转换为胖模式 1 待AP启动完成后 从console口登录 波特率为9600 账号默认为admin 密码为admin huawei com 2 登录成功后 AP默认的IP地址为
  • python3+selenium调用浏览器驱动时报错的解决方法

    如题 在python3环境中使用selenium 在调用浏览器驱动时 报错 报错信息如图 报错原因是因为chromeDriver驱动需要与相应的chrome浏览器版本号相对应 解决方法 检查一下浏览器版本号 当前小编的chrome浏览器版本
  • corrupted double-linked list: 0x086a6c50(内存问题)

    新增了一段代码 程序就直接异常了 但是新增的代码没什么问题 但是在qt里面只显示异常也看不出是什么原因导致的 在终端运行了下 就提示有这个错误了 上网搜了一下 是内存的问题 通常有以下容易犯的内存问题 1 内存重复释放 出现double f
  • HTTP快速入门+(请求消息数据格式)+ 防盗链分析

    HTTP 概念 Hyper Text Transfer Protocol 超文本传输协议 传输协议 定义了 客户端和服务器端通信时 发送数据的格式 特点 1 基于TCP IP的高级协议 2 默认端口号 80 3 基于请求 响应模型的 一次请
  • struts2的国际化[三种语言的动态切换]

    一 创建三个资源文件 crms zh CN properties crms en US properties crms zh TW properties 二 struts2的配置文件
  • 远程桌面遇到的问题

    1 Remote Desktop Services服务灰色无法启动 Win R 打开运行 键入 services msc 打开服务界面 找到 Remote Desktop Services 服务 双击打开 确认服务名称为 TermServi
  • Verilog学习心得之三-----task与function的区别

    task和function说明语句分别用来定义任务和函数 特点 1 利用任务和函数可以把一个很大的程序模块分解成许多小的任务和函数 便于理解和调用 2 输入 输出和总线信号的值可以传入 传出任务和函数 3 任务和函数往往还是在程序模块中在不
  • LVGL 源码分析大全

    LVGL 源码分析大全目录 1 概述 2 已完成源码分析文章列表 2 1 硬件抽像层 hal 2 2 核心框架 core misc 2 3 定制功能 2 4 内部接口 2 5 案例讲解 2 6 其它 3 样式 4 组件 5 主题 6 开发环
  • Linux的10个最危险的命令

    Linux命令行佷有用 很高效 也很有趣 但有时候也很危险 尤其是在你不确定你自己在正在做什么时候 这篇文章将会向你介绍十条命令 但你最好不要尝试着去使用 当然 以下命令通常都是在root权限下才能将愚蠢发挥到无可救药 在普通用户身份下 破
  • Docker关闭容器命令(docker stop)

    关闭容器 一定要是容器的名称 也就是 NAMES 下面的名称 关闭容器 docker stop 容器名称 非root用户 关闭容器 sudo docker stop 容器名称
  • Android Studio在build时一直停在:gradle: download maven-metadata.xml

    AndroidStudio在gradle build时 一直停在 gradle download maven metadata xml 解决 如果使用阿里云maven 看看使用的是不是旧版的maven 如果是 则更新为新版本的仓库地址 新版
  • Ubuntu18.04 安装速腾聚创最新驱动RSLidar_SDK采集XYZIRT格式的激光点云数据 --SLAM不学无术小问题

    Ubuntu18 04 安装速腾聚创最新驱动RSLidar SDK采集XYZIRT格式的激光点云数据 新款驱动支持RS16 RS32 RSBP RS128 RS80 RSM1 B3 RSHELIOS等型号 注意 该教程旨在引导安装 可能现在
  • C#相等性比较

    本文阐述C 中相等性比较 其中主要集中在下面两个方面 和 运算符 什么时候它们可以用于相等性比较 什么时候它们不适用 如果不使用 那么它们的替代方式是什么 什么时候 需要自定一个类型的相等性比较逻辑 在阐述相等性比较 以及如何自定义相等性比
  • npm常用命令

    一 npm更新所有依赖最新版本 安装组件 npm install g npm check updates 查看所有依赖最新版本 ncu 更新所有依赖到最新版本 ncu u 二 查看单个依赖版本 npm info 依赖包名称 version
  • 【ChatGPT本地部署-- ChatGLM】

    这里写自定义目录标题 ChatGPT本地部署 ChatGLM 转载 一 什么是ChatGLM 二 本地部署 三 模型与ChatGPT和GPT4AII 效果对比 ChatGPT本地部署 ChatGLM 转载 目录 一 什么是ChatGLM 二
  • golang cli_Go CLI教程:财富克隆

    golang cli I ve written two CLI app tutorials to build gololcat and gocowsay In both I used fortune as the input generat
  • 解决smplayer中文字幕乱码

    首先 打开选项 gt 首选项 选择字幕选项卡 找到 默认字符编码 选项 在下拉框中选择 简体中文 cp936 再打开 字体和颜色 页卡 上边 选择 系统字体 在下拉选框中选择一种简体中文字体 转载于 https www cnblogs co
  • 追忆我那为之奋斗了5年的地方

    虽然已经下定决心离开 但是当邮件发出那一刻 我的手还是忍不住的发抖 心跳在不停的加速 这毕竟是我工作了5年的地方 这里有我熟悉的面孔 直到过了几分钟 Boss回了个信息 过来下 我才深吸一口气 缓缓的走向他的办公室 追忆 初入职顺利过关斩将
  • Linux 编译安装 openssl库

    Linux 编译安装 openssl库 如果是不需要特定版本的openssl库的安装非常简单 直接sudo apt install opensll即可 而且像Ubuntu这种应该是自带了openssl库的 运行openssl version