1

我需要为我的 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。它有配置脚本来制作和 安装http://www.openssl.org/source/openssl-1.0.1e.tar.gz

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

4

1 回答 1

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 库和 Android。该setenv-android.sh脚本最重要,因为它设置了路径、sysroot 和工具链。一旦设置了路径和工具链,剩下的就很容易了。

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

于 2014-01-07T04:55:46.120 回答