📌  相关文章
📜  OPENSSL_ROOT_DIR(缺少:OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)(1)

📅  最后修改于: 2023-12-03 15:18:07.936000             🧑  作者: Mango

OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)

简介

当编译带着OpenSSL链接器的程序时,有可能会出现错误提示OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)。这个错误提示告诉我们编译器在编译过程中无法找到OpenSSL的相关库和头文件路径。

常见原因

该错误通常因为以下原因所导致:

  1. OpenSSL没有安装,默认情况下,许多操作系统中并没有安装OpenSSL。

  2. OpenSSL的库和头文件路径没有正确设置。需要设置正确的OPENSSL_ROOT_DIR,OPENSSL_CRYPTO_LIBRARY和OPENSSL_INCLUDE_DIR。

方案

要解决这个错误,必须解决以上两个原因中的至少一个。

解决方案1:安装OpenSSL

可以通过以下方式安装OpenSSL:

Windows系统

可以通过以下步骤,在Windows系统下安装OpenSSL:

  1. 下载OpenSSL的二进制安装包。

  2. 运行安装包,按照提示完成安装。

  3. 配置OPENSSL_ROOT_DIR环境变量,例如:

    set OPENSSL_ROOT_DIR=C:\OpenSSL-Win64
    

Ubuntu系统

可以通过以下步骤,在Ubuntu系统下安装OpenSSL:

  1. 打开终端,输入以下命令安装OpenSSL:

    sudo apt-get install openssl
    
解决方案2:设置OPENSSL_ROOT_DIR、OPENSSL_CRYPTO_LIBRARY和OPENSSL_INCLUDE_DIR

如果使用的是已经安装好的OpenSSL,需要设置OPENSSL_ROOT_DIR、OPENSSL_CRYPTO_LIBRARY和OPENSSL_INCLUDE_DIR,以保证编译器能够找到OpenSSL库文件和头文件路径。

CMake项目

如果是使用CMake构建项目,可以在CMakeLists.txt文件中添加以下语句:

set(OPENSSL_ROOT_DIR /path/to/openssl)
set(OPENSSL_CRYPTO_LIBRARY /path/to/openssl/crypto/libcrypto.so)
set(OPENSSL_INCLUDE_DIR /path/to/openssl/include)

Makefile项目

如果是使用Makefile构建项目,则需要在Makefile中定义以下变量:

OPENSSL_ROOT_DIR=/path/to/openssl
OPENSSL_LIBS=-L$(OPENSSL_ROOT_DIR)/lib -lcrypto
OPENSSL_INCLUDE=-I$(OPENSSL_ROOT_DIR)/include
结论

OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)错误提示表明编译器找不到OpenSSL相关的库和头文件路径。需要通过安装OpenSSL或者设置正确的环境变量来解决问题。