无法 link openssl 库到 CLion C++ 程序

Unable to link openssl libraries to CLion C++ program

我有一个CLion project。这是我的 CMakeLists.txt:

cmake_minimum_required(VERSION 3.3)
project(Project)

> set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
> include_directories(/usr/include/openssl/) 
> link_libraries(openssl)
> set(SOURCE_FILES main.cpp Includes.h b.cpp b.h a.cpp
> a.h) add_executable(Project ${SOURCE_FILES})

这是我得到的错误:

[ 25%] Linking CXX executable Project /usr/bin/ld: cannot find -lopenssl
collect2: error: ld returned 1 exit status

在您的 Makefile 中设置以下 LDFLAGS:

export LDFLAGS=-L/usr/lib -lssl -lcrypto

也许你应该尝试 link_libraries(ssl) 而不是 link_libraries(openssl),如果你确定你的本地机器上安装了 openssl。 看到 https://wiki.openssl.org/index.php/Libcrypto_API ,它说 "OpenSSL provides two primary libraries: libssl and libcrypto.".

要解决您的问题,只需添加到您的 CMakeList.txt:

link_libraries(crypto)

我遇到了类似的问题,CLion 告诉我该项目找不到我的 OpenSSL 安装。 #include 无法识别 OpenSSL。

我找到了这个,它对我 link OpenSSL 到我的 CLion 项目很有用。

将此添加到 CMakeLists.txt

# 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()