H2o: Cmake:找不到 OpenSSL

创建于 2015-03-06  ·  10评论  ·  资料来源: h2o/h2o

大家好

我只是关注了https://github.com/h2o/h2o/blob/master/README.md#installation主题,但我在一点上堆叠:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local .

我不断收到此错误:

CMake Error at /usr/share/cmake-2.8/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)
Call Stack (most recent call first):
  /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:313 (find_package_handle_standard_args)
  CMakeLists.txt:8 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!
See also "/root/h2o/CMakeFiles/CMakeOutput.log".
See also "/root/h2o/CMakeFiles/CMakeError.log".

我在干净的 Ubuntu 14.04.02 上的安装步骤:

root@RP-01:~# apt-get install locate git perl python cmake libyaml-0-2 build-essential -y
root@RP-01:~# git clonehttps://github.com/openssl/openssl.git
root@RP-01:~# git clone https://github.com/h2o/h2o.git

root@RP-01:~# apt-get remove openssl libssl-dev
root@RP-01:~# cd openssl/
root@RP-01:~/openssl# ./config
root@RP-01:~/openssl# make
root@RP-01:~/openssl# make test
root@RP-01:~/openssl# make install
root@RP-01:~# /usr/local/ssl/bin/openssl version
OpenSSL 1.1.0-dev xx XXX xxxx

# Looks like ssl is ok! I have no errors here.

根据上面提到的错误我发现了这个话题:
http://stackoverflow.com/questions/16248775/cmake-not-able-to-find-openssl

我试过了:

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

但是,我遇到了同样的错误。 我该如何解决?

谢谢您的帮助。

安德烈

最有用的评论

好的,我在安装过程中取得了一些成就。 所需的软件包(不确定 libyaml-dev 0.1.4 libuv-dev 0.10.22 是否正确版本)

apt-get install locate git cmake build-essential checkinstall autoconf pkg-config libtool python-sphinx libcunit1-dev nettle-dev libyaml-dev libuv-dev -y

相信以后可以出一个ubuntu安装教程。 ;) 但是,我仍然有同样的错误:

root@RP-01:~/h2o# cmake -DCMAKE_INSTALL_PREFIX=/usr/local .
CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:278 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:279 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:281 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:283 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!
See also "/root/h2o/CMakeFiles/CMakeOutput.log".
See also "/root/h2o/CMakeFiles/CMakeError.log".

@kazuho谢谢你的提议,但我现在有这样的提议:

root@RP-01:~/h2o# cmake -DCMAKE_INCLUDE_PATH=/usr/local/ssl/include -DCMAKE_LIBRARY_PATH=/usr/local/ssl/lib
CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:278 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:279 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:281 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:283 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


-- Found OpenSSL: /usr/local/ssl/lib/libssl.a;/usr/local/ssl/lib/libcrypto.a (found version ".0.0`") 
-- Found LIBUV: /usr/lib/x86_64-linux-gnu/libuv.so  
-- Found LIBYAML: /usr/lib/x86_64-linux-gnu/libyaml.so  
-- Found WSLAY: /usr/local/lib/libwslay.so  
-- Configuring incomplete, errors occurred!
See also "/root/h2o/CMakeFiles/CMakeOutput.log".
See also "/root/h2o/CMakeFiles/CMakeError.log".

我也遇到这个问题。 通过一些搜索互联网,我发现了这个问题。
终于找到了cmake不能成功决定openssl版本的原因。
在 /usr/share/cmake-2.8/Modules/FindOpenSSL。 cmake:278这个文件,它使用正则表达式来匹配 openssl 版本,使用:
REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
但是在 openssl/opensslv.h 中,它将版本定义为:
# define OPENSSL_VERSION_NUMBER 0x101000bfL
你注意到这里的魔力了吗?
是的,# 和define 之间的空格是它无法正确决定openssl 版本的原因。 通过删除 opensslv.h 中的空间,配置过程现在可以成功。
改成:
#define OPENSSL_VERSION_NUMBER 0x101000bfL

所有10条评论

我遇到了这个问题,然后我跟着
cmake -DOPENSSL_ROOT_DIR=/usr/local/ssl -DOPENSSL_LIBRARIES=/usr/local/ssl/lib
然后错误消失了

对我来说,错误仍然存​​在。 即使我这样尝试:

root@RP-01:~/h2o# cmake -DOPENSSL_ROOT_DIR=/usr/local/ssl -DOPENSSL_LIBRARIES=/usr/local/ssl/lib cmake -DCMAKE_INSTALL_PREFIX=/usr/local .

你介意尝试一下: cmake -DCMAKE_INCLUDE_PATH=/usr/local/ssl/include -DCMAKE_LIBRARY_PATH=/usr/local/ssl/lib吗?

好的,我在安装过程中取得了一些成就。 所需的软件包(不确定 libyaml-dev 0.1.4 libuv-dev 0.10.22 是否正确版本)

apt-get install locate git cmake build-essential checkinstall autoconf pkg-config libtool python-sphinx libcunit1-dev nettle-dev libyaml-dev libuv-dev -y

相信以后可以出一个ubuntu安装教程。 ;) 但是,我仍然有同样的错误:

root@RP-01:~/h2o# cmake -DCMAKE_INSTALL_PREFIX=/usr/local .
CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:278 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:279 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:281 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:283 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!
See also "/root/h2o/CMakeFiles/CMakeOutput.log".
See also "/root/h2o/CMakeFiles/CMakeError.log".

@kazuho谢谢你的提议,但我现在有这样的提议:

root@RP-01:~/h2o# cmake -DCMAKE_INCLUDE_PATH=/usr/local/ssl/include -DCMAKE_LIBRARY_PATH=/usr/local/ssl/lib
CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:278 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:279 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:281 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:283 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


-- Found OpenSSL: /usr/local/ssl/lib/libssl.a;/usr/local/ssl/lib/libcrypto.a (found version ".0.0`") 
-- Found LIBUV: /usr/lib/x86_64-linux-gnu/libuv.so  
-- Found LIBYAML: /usr/lib/x86_64-linux-gnu/libyaml.so  
-- Found WSLAY: /usr/local/lib/libwslay.so  
-- Configuring incomplete, errors occurred!
See also "/root/h2o/CMakeFiles/CMakeOutput.log".
See also "/root/h2o/CMakeFiles/CMakeError.log".

@aafanasyev抱歉,我不小心关闭了这个问题。 如果问题仍然存在,请重新打开问题。

@kazuho - 即使我使用cmake -DWITH_BUNDLED_SSL=on构建也需要 OpenSSL 吗? 似乎是这样,因为我得到了相同的Could NOT find OpenSSL错误。

@kishorenc

即使我使用cmake -DWITH_BUNDLED_SSL=on构建,是否也需要 OpenSSL?

不。
你能发布输入输出吗?

当然:

$ cmake -DWITH_BUNDLED_SSL=on .
-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- 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
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- 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
-- 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)
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-2.8/Modules/FindZLIB.cmake:85 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:46 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!

很抱歉误报。 我意识到它实际上是在抱怨 ZLIB 而不是 OpenSSL。 现在一切都好。

好的,我在安装过程中取得了一些成就。 所需的软件包(不确定 libyaml-dev 0.1.4 libuv-dev 0.10.22 是否正确版本)

apt-get install locate git cmake build-essential checkinstall autoconf pkg-config libtool python-sphinx libcunit1-dev nettle-dev libyaml-dev libuv-dev -y

相信以后可以出一个ubuntu安装教程。 ;) 但是,我仍然有同样的错误:

root@RP-01:~/h2o# cmake -DCMAKE_INSTALL_PREFIX=/usr/local .
CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:278 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:279 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:281 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:283 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


-- Configuring incomplete, errors occurred!
See also "/root/h2o/CMakeFiles/CMakeOutput.log".
See also "/root/h2o/CMakeFiles/CMakeError.log".

@kazuho谢谢你的提议,但我现在有这样的提议:

root@RP-01:~/h2o# cmake -DCMAKE_INCLUDE_PATH=/usr/local/ssl/include -DCMAKE_LIBRARY_PATH=/usr/local/ssl/lib
CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:278 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:279 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:281 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


CMake Error at /usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:283 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:8 (FIND_PACKAGE)


-- Found OpenSSL: /usr/local/ssl/lib/libssl.a;/usr/local/ssl/lib/libcrypto.a (found version ".0.0`") 
-- Found LIBUV: /usr/lib/x86_64-linux-gnu/libuv.so  
-- Found LIBYAML: /usr/lib/x86_64-linux-gnu/libyaml.so  
-- Found WSLAY: /usr/local/lib/libwslay.so  
-- Configuring incomplete, errors occurred!
See also "/root/h2o/CMakeFiles/CMakeOutput.log".
See also "/root/h2o/CMakeFiles/CMakeError.log".

我也遇到这个问题。 通过一些搜索互联网,我发现了这个问题。
终于找到了cmake不能成功决定openssl版本的原因。
在 /usr/share/cmake-2.8/Modules/FindOpenSSL。 cmake:278这个文件,它使用正则表达式来匹配 openssl 版本,使用:
REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
但是在 openssl/opensslv.h 中,它将版本定义为:
# define OPENSSL_VERSION_NUMBER 0x101000bfL
你注意到这里的魔力了吗?
是的,# 和define 之间的空格是它无法正确决定openssl 版本的原因。 通过删除 opensslv.h 中的空间,配置过程现在可以成功。
改成:
#define OPENSSL_VERSION_NUMBER 0x101000bfL

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

wujunjenny picture wujunjenny  ·  5评论

proyb6 picture proyb6  ·  5评论

daniel-lucio picture daniel-lucio  ·  5评论

fetus-hina picture fetus-hina  ·  4评论

utrenkner picture utrenkner  ·  8评论