it-swarm.com.de

CMake kann die OpenSSL-Bibliothek nicht finden

Ich versuche, eine Software zu installieren, die cmake verwendet, um sich zu installieren, wenn ich bei commandlin cmake gebe.
es gibt mir folgenden Fehler in dieser Datei, CMakeLists.txt -------- Zeile ---> 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)

Hier ist der Teil der Datei CMakeLists.txt, in dem der Fehler auftritt: ------

#
# 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
Jetzt habe ich Openssl installiert, hier: ----

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

Ich habe mein .profil so eingestellt: ----

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

Wie kann ich diesen Fehler beheben?

bearbeiten: -
Diesen Fehler bekommen

/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

Es ist ein weit verbreitetes Missverständnis: CMake benötigt keine Umgebungsvariablen, um zu wissen, wo sich die Bibliothek und das Include-Verzeichnis befinden, sondern CMake-Variablen.

Da CMake Ihre OpenSSL-Bibliothek und Ihr Include-Verzeichnis nicht finden kann, müssen Sie ihm beim Aufrufen manuell mitteilen, wo sie sich in der Befehlszeile befinden. Verwenden Sie die Option -D, um Konstanten in CMake über die Befehlszeile festzulegen. Sie müssen die Konstanten OPENSSL_ROOT_DIR und OPENSSL_LIBRARIES da sie derjenige sind, der den Fehler auslöst.

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

Ich hatte das gleiche Problem (openssl) und dieses funktionierte für mich auf Ubuntu 14.04.1 LTS

Sudo apt-get install libssl-dev
158
Arwen

behebt es unter MacOS mit

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

Bitte installiere openssl von untenstehendem Link:
https://code.google.com/p/openssl-for-windows/downloads/list
setzen Sie dann die folgenden Variablen:

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

Wenn Sie Ubuntu verwenden, führen Sie Sudo apt install libssl-dev.

15
ryancheung

Wenn Sie pkg-config verwenden können: pkg_search_module() kann OpenSSL für Sie finden.

# 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

Dasselbe Problem, und behebt es auf meinem Centos 6.5 mit dem folgenden Befehl.

yum install openssl-devel
8
xavierzhao

sie haben die FindOpenSSL.cmake-Datei im cmake-Modul (Pfad usr/shared.cmake-3.5/modules). # OpenSSL durchsuchen

 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

Ich poste aus Spaß eine alternative funktionierende Antwort auf die Frage des OP:

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

@Morwenn ist richtig. Sie müssen das openssl-DIR konfigurieren. Vorher müssen Sie möglicherweise sicherstellen, dass Sie es haben. Sie sollten überprüfen, ob Sie es haben. erster Lauf openssl version, wenn Sie es dann haben, können Sie win + r Führen Sie openssl aus, und Sie werden das Hauptverzeichnis finden, da es in Ihrem System möglicherweise nicht als openssl bezeichnet wird.

enter image description here

enter image description here

1
Shihe Zhang

Hinweis für Fedora 27-Benutzer: Ich musste das Paket openssl-devel Installieren, um cmake erfolgreich auszuführen.

Sudo dnf install openssl-devel

1
ttarczynski