Ubuntu下cmake编译报错OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found version “1.1.1“)

正点原子STM32MP57学习记录

情况说明

本人在这之前直接在linux下apt-get install已安装过了openssl,默认安装在usr/bin目录下,如下图。

但是,本人在尝试第一次cmake编译时,却报错:

c 复制代码
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found   version "1.1.1")

解决办法

换个路径重新安装openssl,按照报错提示设置环境变量,重新编译。

重新安装openssl

操作系统:Ubuntu18.02

OpenSSL Version: openssl-1.1.1d.tar.gz

OpenSSL下载地址为:https://www.openssl.org/source/

参考博客:https://www.cnblogs.com/relucent/p/11887328.html

1、下载压缩包

c 复制代码
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

2、在文件夹下解压缩,执行如下命令:

c 复制代码
  tar -xzvf openssl-1.1.1d.tar.gz

得到 openssl-1.1.0c 文件夹。

3、进入解压目录,执行如下命令:

c 复制代码
cd  openssl-1.1.1d

4、设定 Openssl 安装路径,( --prefix )参数为要安装的目录,执行如下命令:

c 复制代码
 ./config --prefix=/usr/local/openssl

5、执行命令

c 复制代码
./config -t

6、编译Openssl,编译需要等待一定的时间

c 复制代码
make

7、安装 Openssl,安装也需要一定的时间

c 复制代码
sudo make install

8、安装动态链接库。配置编译参数,指定openssl为交叉编译方式

c 复制代码
./config linux-generic32  shared no-asm no-async --prefix=/usr/local/openssl CROSS_COMPILE=/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf- CC=gcc CXX=g++

简单参数说明

c 复制代码
no-asm : 不使用汇编程序(do not use assembler).
no-async : 不使用GNU的ucontext库,有些版本的编译器不提供GNU C的ucontext库.
no-tests : 不生成测试额外的测试程序
no-comp : 不建立对SSL / TLS压缩的支持。 如果这个选项启用(默认设置),则压缩只会如果还选择了zlib或zlib-dynamic选项,则可以正常工作。
no-cms : 不建立对CMS功能的支持
no-ec : 不建立对椭圆曲线的支持
no-ec2m : 不支持二进制椭圆曲线
no-arg: 不支持这些算法,aria, bf, blake2, camellia, cast, chacha,
cmac, des, dh, dsa, ecdh, ecdsa, idea, md4, mdc2, ocb,
poly1305, rc2, rc4, rmd160, scrypt, seed, siphash, sm2, sm3,
sm4 or whirlpool. The "ripemd" algorithm is deprecated and
if used is synonymous with rmd160.
no-ocsp : 不建立对OCSP的支持。
no-sse2 : 不建立对sse2的支持。
no-rfc3779 : 不建立对RFC3779("用于IP的X.509扩展地址和AS标识符")。
no-srp: 不建立对SRP或基于SRP的密码套件的支持。。
no-ocsp : 不建立对OCSP的支持。
--prefix: 用于OpenSSL安装的前缀,其中包含 ==bin, lib, include, share/man,

share/doc/openssl目录,默认的目录为***/ usr / local==***.
linux-generic32: 表示32位linux系统,如果不指定将默认按64位编译.
CROSS_COMPILE: 表示使用的交叉编译链

9、再次编译安装

c 复制代码
make clean
make
sudo make install

10、执行以下命令,查看openssl的依赖关系。

c 复制代码
cd /usr/local
ldd /usr/local/openssl/bin/openssl 

11、查看openssl绝对路径和版本,执行如下命令。

c 复制代码
which openssl
openssl version

设置环境变量

本人重新安装的openssl如下:

设置环境变量:

c 复制代码
export PATH=/usr/local/openssl/bin:$PATH
export PATH=/usr/local/openssl:$PATH

重新cmake编译成功

相关推荐
孙同学_12 分钟前
【Linux篇】调试器-gdb/cgdb使用
linux·运维·服务器
自由鬼16 分钟前
免费开源抓包工具Wireshark介绍
运维·服务器·网络·测试工具·网络安全·wireshark
irisMoon0618 分钟前
mac本地代理nginx,解决跨域问题
linux·nginx·macos
汤姆和杰瑞在瑞士吃糯米粑粑31 分钟前
【Linux学习篇】--开发工具第一期
linux·运维·学习
Richard_Yang35 分钟前
基于OpenObserve实现分布式系统监控(1)
运维
菜鸟康36 分钟前
Linux系统编程--线程同步
linux
Czzzzlq1 小时前
STM32基础教程——对射式红外传感器计数实验
c语言·stm32·单片机·嵌入式硬件·mcu
Lllongroad1 小时前
设备树的概念
linux
dessler1 小时前
DeepSeek-进阶版部署(Linux+GPU)
linux·运维·服务器·云原生·大模型·deepseek
集大周杰伦2 小时前
ARM Cortex-M 内存映射详解:如何基于寄存器直接读写 寄存器映射方式编码程序 直接操作硬件寄存器来控制 MCU
arm开发·stm32·单片机·内存映射·arm cortex-m·地址映射·寄存器编码