ubuntu - Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) -- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system
时间: 2025-07-19 14:40:49 浏览: 1
### Ubuntu 上 OpenSSL 找不到的解决方案
在 Ubuntu 系统中,如果遇到 `CMake` 编译时报错 `Could NOT find OpenSSL` 或者提示缺少 `OPENSSL_CRYPTO_LIBRARY` 和其他相关库的情况,可以通过以下方法解决问题。
#### 设置环境变量
通过手动设置环境变量来指定 OpenSSL 的根目录以及头文件和库的位置。可以按照以下方式操作:
```bash
export OPENSSL_ROOT_DIR=/usr
export OPENSSL_INCLUDE_DIR=/usr/include/openssl
export OPENSSL_LIBRARIES="/usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so"
```
上述命令分别设置了 OpenSSL 的根目录、头文件路径以及动态链接库位置[^2]。这些路径通常对应于通过 `apt-get install openssl libssl-dev` 安装后的默认路径。
#### 修改 CMakeLists.txt 文件
如果项目中有自定义的 CMake 配置文件,则可以在其中显式声明 OpenSSL 库的相关参数。例如,在项目的 `CMakeLists.txt` 中添加以下内容:
```cmake
set(OPENSSL_ROOT_DIR "/usr")
find_package(OpenSSL REQUIRED)
if(OPENSSL_FOUND)
include_directories(${OPENSSL_INCLUDE_DIR})
target_link_libraries(your_target_name PRIVATE ${OPENSSL_LIBRARIES})
endif()
```
此配置会强制 CMake 使用 `/usr` 路径下的 OpenSSL 头文件和库文件[^1]。
#### 检查依赖包是否完整安装
有时仅安装基础版本的 OpenSSL 可能不足以满足开发需求。因此需要额外确认并安装必要的开发工具链组件:
```bash
sudo apt update
sudo apt install -y build-essential cmake pkg-config libssl-dev
```
以上命令确保系统具备完整的构建工具集,并且包含了 OpenSSL 开发所需的静态库和支持文件[^4]。
#### 示例验证流程
假设目标程序名为 `example_program`,其对应的 CMake 构建过程可按如下方式进行测试:
```bash
mkdir build && cd build
cmake .. \
-DOPENSSL_ROOT_DIR=/usr \
-DOPENSSL_INCLUDE_DIR=/usr/include/openssl \
-DOPENSSL_LIBRARIES="/usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so"
make
```
这样能够有效规避因未正确定位到 OpenSSL 组件而引发的各种错误消息[^3]。
---
阅读全文
相关推荐


















