Cmake не может найти openssl
Я пытаюсь установить программное обеспечение, которое использует cmake для установки, когда я даю команду commandlin cmake..
он дает мне следующую ошибку в этом файле, CMakeLists.txt --------
line --- > 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)
Вот часть файла CMakeLists.txt, где происходит ошибка: ------
#
# 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
Теперь я установил Openssl, здесь: ----
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
Я установил свой .profile как: ----
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
Как разрешить эту ошибку?
изменить: -
Получение этой ошибки
/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'
Ответы
Ответ 1
Это распространенное недоразумение: CMake не нуждается в переменных среды, чтобы знать, где библиотека и include dir являются переменными CMake.
Так как CMake не может найти ваш каталог OpenSSL lib и include, вам придется вручную сообщить ему, где они находятся, с его командной строкой, когда вы его вызываете. Используйте опцию -D
для установки констант в CMake из командной строки. Вам нужно будет установить константы OPENSSL_ROOT_DIR
и OPENSSL_LIBRARIES
, так как они запускают ошибку.
cmake -DOPENSSL_ROOT_DIR=/usr/local/ssl -DOPENSSL_LIBRARIES=/usr/local/ssl/lib
Ответ 2
У меня была та же проблема (openssl), и это сработало для меня на Ubuntu 14.04.1 LTS
sudo apt-get install libssl-dev
Ответ 3
зафиксировал его на macOS, используя
brew install openssl
cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib
Ответ 4
Пожалуйста, установите openssl из списка ниже:
https://code.google.com/p/openssl-for-windows/downloads/list
затем установите следующие переменные:
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
Ответ 5
Такая же проблема и исправлена на моем centos 6.5, используя следующую команду.
yum install openssl-devel
Ответ 6
Если вы можете использовать pkg-config: pkg_search_module()
можете найти OpenSSL для вас.
# 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 own
endif()
target_link_libraries(${YOUR_TARGET_HERE} ${OPENSSL_LIBRARIES})
Ответ 7
у вас есть файл FindOpenSSL.cmake в модуле cmake (путь usr/shared.cmake-3.5/modules) # Поиск 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)
Ответ 8
@Морвенн прав.
Вам нужно настроить openssl DIR.
До этого вам может потребоваться убедиться, что у вас это есть.
вы должны проверить, есть ли у вас это.
сначала запустите openssl version
, затем, если у вас есть это, вы можете win + r
запустить openssl
и вы выиграете найти основной каталог, так как он не может быть назван как openssl в вашей системе.
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Ответ 9
Примечание для пользователей Fedora 27: мне пришлось установить пакет openssl-devel
для успешного запуска cmake
.
sudo dnf install openssl-devel
Ответ 10
Просто для забавы плохой пост альтернативный рабочий ответ для вопроса OP:
cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ -DOPENSSL_CRYPTO_LIBRARY=/usr/local/opt/openssl/lib/