linux - 未找到 Openssl header - 错误

标签 linux openssl cmake

我需要编译一个 libwebsocket 库用于我的 ARM 目标,它需要 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。它有配置脚本来制作和安装 http://www.openssl.org/source/
openssl-1.0.1e.tar.gz

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

最佳答案

So with this (openssl-1.0.1e.tar.gz) will be the right package to get --> openssl-dev or openssl-devel --- so that i can resolve this error ?

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

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

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

如果是 iOS 或 Android,OpenSSL wiki 有一些平台交叉编译的例子。参见,例如,FIPS Library and Android . setenv-android.sh 脚本最重要,因为它设置路径、sysroot 和工具链。一旦设置了路径和工具链,剩下的就很简单了。

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

关于linux - 未找到 Openssl header - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16215984/

相关文章:

linux - Matlab Gui 兼容性 - Linux 和 MacOS 之间的不同方面

linux - 在 Windows Bash 上执行程序?

r - R-Librarys 中 MD5 哈希的差异 - 序列化对象的 MD5

c++ - 如何在 CMake 中导入库

cmake - 在 CMake 中转发无值函数参数的简单方法

linux - 如何删除名称为 '--' 的目录

python - 尝试将命令行输出保存到文件时出错

go - 使用三重 DES 加密创建 RSA 私钥

attributes - 创建期间的 openssl 自定义属性

c++ - CMAKE 在子目录之间共享变量