web-dev-qa-db-fra.com

CMake pas en mesure de trouver la bibliothèque OpenSSL

J'essaye d'installer un logiciel, qui utilise cmake pour s'installer tout seul, quand je donne à commandlin cmake ..
Cela me donne l'erreur suivante dans ce fichier, CMakeLists.txt -------- ligne ---> find_package (OpenSSL REQUIRED): -

 cmake ..
-- Could NOT find Git (missing:  GIT_EXECUTABLE) 
ZLib include dirs: /usr/include
ZLib libraries: /usr/lib/arm-linux-gnueabihf/libz.so
Compiling with SSL support
CMake Error at /usr/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (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)
Call Stack (most recent call first):
  /usr/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/share/cmake-2.8/Modules/FindOpenSSL.cmake:313 (find_package_handle_standard_args)
  CMakeLists.txt:436 (find_package)

Voici la partie du fichier CMakeLists.txt où se produit une erreur: ------

#
# OpenSSL
#
if (WITH_SSL)
    message("Compiling with SSL support")

    if (USE_CYASSL)
        # Use CyaSSL as OpenSSL replacement.
        # TODO: Add a find_package command for this also.
        message("CyaSSL include dir: ${CYASSL_INCLUDE_DIRS}")
        message("CyaSSL libraries: ${CYASSL_LIB}")

        # Additional to the root directory we need to include
        # the cyassl/ subdirectory which contains the OpenSSL
        # compatability layer headers.
        foreach(inc ${CYASSL_INCLUDE_DIRS})
            include_directories(${inc} ${inc}/cyassl)
        endforeach()

        list(APPEND LIB_LIST ${CYASSL_LIB})
    else()
        # TODO: Add support for STATIC also.
        find_package(OpenSSL REQUIRED)

        message("OpenSSL include dir: ${OPENSSL_INCLUDE_DIR}")
        message("OpenSSL libraries: ${OPENSSL_LIBRARIES}")

        include_directories(${OPENSSL_INCLUDE_DIR})
        list(APPEND LIB_LIST ${OPENSSL_LIBRARIES})
    endif()
endif(WITH_SSL)

http://www.opensource.Apple.com/source/OpenSSL/OpenSSL-7.1/openssl/INSTALL?txt
Maintenant, j'ai installé Openssl, ici: ----

ssl header is here   -- > /usr/local/ssl/include/openssl/
ssl library is here  -- > /usr/local/ssl/lib/libssl.a
                          /usr/local/ssl/lib/libcrypto.a
openssl is here      -- > /usr/local/ssl/bin

J'ai défini mon .profile comme suit: ----

export LD_LIBRARY_PATH=/usr/local/ssl/include/openssl:/usr/lib:/usr/local/lib:/usr/lib/pkgconfig:/usr/local/include/wx-2.8/wx:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
export OPENSSL_ROOT_DIR=/usr/local/ssl
export OPENSSL_LIBRARIES=/usr/local/ssl/lib/

PATH = /usr/local/ssl/bin:$PATH

Comment résoudre cette erreur?

modifier :--
Obtenir cette erreur

/usr/local/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x10): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x24): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x30): undefined reference to `dlclose'
69
Allan

C'est un malentendu courant: CMake n'a pas besoin de variables d'environnement pour savoir où se trouvent la bibliothèque et le répertoire d'inclusion, mais des variables CMake.

Comme CMake ne peut pas trouver votre répertoire OpenSSL lib et include, vous devrez lui indiquer manuellement où ils se trouvent avec sa ligne de commande lorsque vous l’appelez. Utilisez l'option -D pour définir les constantes dans CMake à partir de la ligne de commande. Vous devrez définir les constantes OPENSSL_ROOT_DIR et OPENSSL_LIBRARIES puisque ce sont eux qui déclenchent l’erreur.

cmake -DOPENSSL_ROOT_DIR=/usr/local/ssl -DOPENSSL_LIBRARIES=/usr/local/ssl/lib
58
Morwenn

J'ai eu le même problème (openssl) et cela a fonctionné pour moi sur Ubuntu 14.04.1 LTS

Sudo apt-get install libssl-dev
158
Arwen

corrigé sur macOS en utilisant

brew install openssl
cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib
18
qin

Veuillez installer openssl à partir du lien ci-dessous:
https://code.google.com/p/openssl-for-windows/downloads/list
puis définissez les variables ci-dessous:

OPENSSL_ROOT_DIR=D:/softwares/visualStudio/openssl-0.9.8k_WIN32
OPENSSL_INCLUDE_DIR=D:/softwares/visualStudio/openssl-0.9.8k_WIN32/include
OPENSSL_LIBRARIES=D:/softwares/visualStudio/openssl-0.9.8k_WIN32/lib
17
appapurapu

Si vous utilisez Ubuntu, lancez Sudo apt install libssl-dev.

15
ryancheung

Si vous pouvez utiliser pkg-config: pkg_search_module() peut trouver OpenSSL pour vous.

# Search OpenSSL
find_package(PkgConfig REQUIRED)
pkg_search_module(OPENSSL REQUIRED openssl)

if( OPENSSL_FOUND )
    include_directories(${OPENSSL_INCLUDE_DIRS})
    message(STATUS "Using OpenSSL ${OPENSSL_VERSION}")
else()
    # Error; with REQUIRED, pkg_search_module() will throw an error by it's own
endif()

target_link_libraries(${YOUR_TARGET_HERE} ${OPENSSL_LIBRARIES})
9
ollo

Même problème, et résolu sur mon centos 6.5 en utilisant la commande suivante.

yum install openssl-devel
8
xavierzhao

vous rencontrez le fichier FindOpenSSL.cmake dans le module cmake (chemin usr/shared.cmake-3.5/modules) # Search OpenSSL

 find_package(OpenSSL REQUIRED) 
if( OpenSSL_FOUND )
    include_directories(${OPENSSL_INCLUDE_DIRS})
    link_directories(${OPENSSL_LIBRARIES})
    message(STATUS "Using OpenSSL ${OPENSSL_VERSION}")

target_link_libraries(project_name /path/of/libssl.so /path/of/libcrypto.so)
4
sekhar

Juste pour le plaisir, je poste une réponse de travail alternative à la question du PO:

cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ -DOPENSSL_CRYPTO_LIBRARY=/usr/local/opt/openssl/lib/
3
user7986267

@ Morwenn a raison. Vous devez configurer le DIR openssl. Avant cela, vous devrez peut-être vous en assurer. vous devriez vérifier si vous l'avez. première exécution openssl version, alors si vous en avez, vous pouvez win + r lancez openssl et vous gagnerez le répertoire principal car il ne se nommera peut-être pas comme openssl dans votre système.

enter image description here

enter image description here

1
Shihe Zhang

Note pour les utilisateurs de Fedora 27: J'ai dû installer openssl-devel package pour exécuter le cmake avec succès.

Sudo dnf install openssl-devel

1
ttarczynski