gcc - 如何在 Beaglebone Black 上编译 openssl 1.0.2f?

标签 gcc compiler-errors openssl debian beagleboneblack

目前,我使用下面的命令从 openssl 包编译 openssl 1.0.2f:

$ tar xzf openssl-1.0.2e.tar.gz
$ cd openssl-1.0.2e
$export PREFIX={PREFIX}
$./Configure -DOPENSSL_NO_HEARTBEATS --openssldir=$PREFIX shared os/compiler:${TARGET}
$ make

这是 Beaglebone Black 的架构

$uname -a
$Linux beaglebone 3.8.13-bone70 #1 SMP Fri Jan 23 02:15:42 UTC 2015 armv7l GNU/Linux

我还尝试从列表中设置目标:

  • linux-armv7l || linux-aarch64 || linux-alpha+bwx-ccc || linux-alpha+bwx-gcc|| linux-alpha-ccc || linux-alpha-gcc || linux-aout || linux-armv4 || linux-elf || linux-generic32 || linux-generic64 || linux-ia32-icc || linux-ia64 ||linux-ia64-icc || linux-mips32 || linux-mips64 || linux-ppc || linux-ppc64 || linux-ppc64le ||linux-sparcv8 || linux-sparcv9 || linux-x32 || linux-x86_64 || linux-x86_64-clang || linux-x86_64-icc || linux32-s390x || linux64-mips64 || linux64-s390x || linux64-sparcv9

但是当 make openssl 时,它返回:

make[1]: {TARGET}: Command not found

我也尝试设置:

os/compiler:gcc

海湾合作委员会版本:

$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2

但是当 make openssl 时,它返回:

/bin/sh: 1: ./pod2mantest: Permission denied
installing man1/CA.pl.1
sh: 1: --section=1: not found
Makefile:634: recipe for target 'install_docs' failed
make: *** [install_docs] Error 127

你能告诉我这里出了什么问题吗?

最佳答案

How to compile openssl 1.0.2f on Beaglebone Black?

我相信您想要 linux-armv4 目标。

$ ./Configure LIST | grep -i arm
android-armeabi
linux-arm64ilp32
linux-armv4

另请参阅Compilation and Installation在 OpenSSL wiki 上。


遵循 Leśny 的建议并运行 ./config 可能是最简单的方法。 config 尝试猜测目标。如果猜测错误,则将 ./Configure 与三元组一起使用:

$ wget https://www.openssl.org/source/openssl-1.0.2g.tar.gz
...
$ tar xzf openssl-1.0.2g.tar.gz
...
$ cd openssl-1.0.2g

然后(注意linux-armv4):

$ ./config shared no-ssl2 no-ssl3 no-comp -DOPENSSL_NO_HEARTBEATS                     
Operating system: armv7l-whatever-linux2
Configuring for linux-armv4
    no-comp         [option]   OPENSSL_NO_COMP (skip dir)
    no-ec_nistp_64_gcc_128 [default]  OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
    no-gmp          [default]  OPENSSL_NO_GMP (skip dir)
    no-jpake        [experimental] OPENSSL_NO_JPAKE (skip dir)
    no-krb5         [krb5-flavor not specified] OPENSSL_NO_KRB5
    no-libunbound   [experimental] OPENSSL_NO_LIBUNBOUND (skip dir)
    no-md2          [default]  OPENSSL_NO_MD2 (skip dir)
    no-rc5          [default]  OPENSSL_NO_RC5 (skip dir)
    no-rfc3779      [default]  OPENSSL_NO_RFC3779 (skip dir)
    no-sctp         [default]  OPENSSL_NO_SCTP (skip dir)
    no-ssl-trace    [default]  OPENSSL_NO_SSL_TRACE (skip dir)
    no-ssl2         [option]   OPENSSL_NO_SSL2 (skip dir)
    no-ssl3         [option]   OPENSSL_NO_SSL3 (skip dir)
    no-store        [experimental] OPENSSL_NO_STORE (skip dir)
    no-unit-test    [default]  OPENSSL_NO_UNIT_TEST (skip dir)
    no-weak-ssl-ciphers [default]  OPENSSL_NO_WEAK_SSL_CIPHERS (skip dir)
    no-zlib         [default] 
    no-zlib-dynamic [default] 
    ...

您可能需要回退到以下内容:

$./Configure linux-armv4 shared no-ssl2 no-ssl3 no-comp -DOPENSSL_NO_HEARTBEATS
...
$ make depend
...
$ make clean
...
$ make

为了完整起见,我在 BeagleBone Black 上使用 Debian console image 进行工作。从 2015 年 12 月开始(我需要 2GB 的小空间,以便存储可用于其他事情):

$ uname -a
Linux beaglebone 4.1.15-ti-rt-r40 #1 SMP PREEMPT RT Thu Jan 7 23:32:08 UTC 2016 armv7l GNU/Linux

关于gcc - 如何在 Beaglebone Black 上编译 openssl 1.0.2f?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35792796/

相关文章:

c++ - enable_if + disable_if 组合引起模棱两可的调用

c - gcc:错误:/e:/源代码/C/Practice/helloWorld.c:参数无效

winapi - DirextX9 Material 不再是用于学习Win32 API编程的 Material 吗?

c++ - 是否有将 SHA1 散列表示为 C 字符串的标准方法,我如何转换成它?

CC\GCC 编译后的可执行文件无法在我的机器上运行?

c++ - 如何在 OS X 中包含 omp.h?

c++ - 错误到底是什么以及错误地为可 move 和不可复制成员调用复制构造函数有什么解决方法

c# - C# 中的变量作用域

Python 3 - 从 X509 证书中提取公钥并用它加密

java - 从 JKS 导出公钥并从 Java 读取