我需要编译一个 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 交叉工具链。我不知道有关于交叉编译库的好教程(我过去也遇到过)。
有一些用于通用交叉编译的预构建配置。打开 Configure
和 config
,然后查看一些三元组。 (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/