原创

cmake 编译时提示: Could NOT find OpenSSL

系统环境

$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
$ whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/share/man/man1/openssl.1ssl.gz
$ ldd /usr/bin/openssl
shell-init: 获取当前目录时出错: getcwd: 无法访问父目录: 没有那个文件或目录
    linux-vdso.so.1 =>  (0x00007ffc62303000)
    libssl.so.10 => /lib64/libssl.so.10 (0x00007fc76e764000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fc76e517000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fc76e22e000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fc76e02a000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fc76ddf7000)
    libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fc76d994000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fc76d790000)
    libz.so.1 => /lib64/libz.so.1 (0x00007fc76d57a000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fc76d1ac000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fc76cf9c000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fc76cd98000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fc76cb7e000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc76c962000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc76e9d6000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fc76c73b000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fc76c4d9000)

错误提示: Could NOT findOpenSSL

$ cmake ..
-- The C compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- CMAKE_BUILD_TYPE not specified. Creating Release build
-- Found C inline keyword: inline
-- Looking for getaddrinfo
-- Looking for getaddrinfo - found
-- Looking for socket
-- Looking for socket - found
-- Looking for poll
-- Looking for poll - found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- Looking for posix_spawnp in rt
-- Looking for posix_spawnp in rt - found
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES
  OPENSSL_INCLUDE_DIR) (Required is at least version "0.9.8")
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindOpenSSL.cmake:313 (find_package_handle_standard_args)
  CMakeLists.txt:122 (find_package)

解决方法: yum install -y openssl-devel

# LINUX系统预装 openssl 的发行版,但发行版不适合开发环境, 所以还需安装开发版本才行
$ yum install -y openssl-devel
$ cmake ..
-- Found OpenSSL: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so (found suitable version "1.0.2k", minimum required is "0.9.8")
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Performing Test HAVE_GNU90
-- Performing Test HAVE_GNU90 - Success
-- Could NOT find POPT (missing:  POPT_INCLUDE_DIR POPT_LIBRARY)
-- Found XMLTO: /usr/bin/xmlto
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.5")
-- Building rabbitmq as a shared library - yes
-- Building rabbitmq as a static library - yes
-- Configuring done
-- Generating done
-- Build files have been written to: /home/soft/amqp/rabbitmq-c/build

总结

在网上看了很多关于此错误的解决方案文章: 大多提示说: 添加cmake命令参数: -DOPENSSL_INCLUDE_DIR-DOPENSSL_SSL_LIBRARIE:
文章地址: https://blog.csdn.net/llzlaowang/article/details/90484336https://stackoverflow.com/questions/61954171/openssl-root-dir-for-cmake
花了小半天时间, 最后看到一篇文章: https://www.cnblogs.com/bigfi/p/9482115.html
其实只需要再安装openssl-devel版本就可以解决

正文到此结束
本文目录