找不到Openssl标头 - 错误

时间:2013-04-25 13:24:19

标签: linux openssl cmake

我需要为我的ARM目标编译一个libwebsocket库,这需要openssl才能运行。 当我在cmake ...

的时候构建最新的libwebsocket时,我遇到了以下错误

但是这里安装了openssl

whereis openssl
openssl: /usr/bin/openssl /usr/bin/X11/openssl /usr/share/man/man1/openssl.1ssl.gz

===================================错误=========== =====

-- Looking for 4 include files stdlib.h, ..., float.h - found
-- Found ZLIB: /usr/lib/arm-linux-gnueabihf/libz.so (found version "1.2.7") 
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)


-- Configuring incomplete, errors occurred!

======================================= openssl在这里===== ===================

ignite@ignite:~/sbox2/rootfs/rfs-raspbian_2/home/pi/libwebsockets/build$  whereis openssl
openssl: /usr/bin/openssl /usr/bin/X11/openssl /usr/share/man/man1/openssl.1ssl.gz

实际上我有,从这里获取tarball。它有配置脚本来制作& make install http://www.openssl.org/source/
OpenSSL的-1.0.1e.tar.gz

所以这个(openssl-1.0.1e.tar.gz)将是正确的包 - >> openssl-dev或openssl-devel ---这样我就可以解决这个错误了?

1 个答案:

答案 0 :(得分:0)

  

所以这个(openssl-1.0.1e.tar.gz)将是正确的包 - >> openssl-dev或openssl-devel ---这样我就可以解决这个错误了?

openssl-dev包用于主机上的开发(可能是x86或x64系列)。您需要为目标(而不是主机)交叉编译库。所以openssl-dev可能无法解决您的问题。

您的目标是通用ARM处理器,iOS还是Android?如果是前者,您将需要一个具有适当路径设置的手臂交叉工具链。我不知道有关交叉编译库的好教程(过去我遇到过它)。

有一些用于通用交叉编译的预构建配置。打开Configureconfig,查看一些三元组。 (OpenSSL不使用Automake和朋友)。

如果是iOS或Android,OpenSSL wiki有一些交叉编译平台的例子。例如,请参阅FIPS Library and Androidsetenv-android.sh脚本是最重要的,因为它设置了路径,sysroot和工具链。一旦设置了路径和工具链,其余部分就很容易了。

如果您的目标是通用ARM,那么您可以使用Android setenv-android.sh作为通用构建的起点。完成构建后,将OPENSSL_ROOT_DIR指向ARM的安装目录。