【问题标题】:Compile OpenSSL for Android with Bazel使用 Bazel 为 Android 编译 OpenSSL
【发布时间】:2016-12-19 15:31:55
【问题描述】:

我正在使用 bazel 为我的 Android 应用程序构建一个原生库。

我想在它上面使用一些 OpenSSL 函数,如下所示:

#include <jni.h>
#include <openssl/aes.h>
...
AES_encrypt(in, out, key);

如何将 openssl 库添加到 bazel build 中?

附属问题:我应该使用哪个存档?

openssl-1.1.0c.tar.gz
openssl-1.0.2j.tar.gz
openssl-1.0.1u.tar.gz
openssl-fips-2.0.13.tar.gz
openssl-fips-ecp-2.0.13.tar.gz

我尝试过的

我已经下载了openssl-1.0.2j 存档。并在我的BUILD 文件中添加了一个cc_library 条目。

cc_library(
    name = "openssl",
    srcs = glob([
         "openssl-1.0.2j/crypto/**/*.h",
         "openssl-1.0.2j/crypto/**/*.c"
         ]),
    includes = [
        "openssl-1.0.2j",
        "openssl-1.0.2j/crypto/",
        ],
    visibility = ["//visibility:public"],
)

我有这个错误:

openssl-1.0.2j/crypto/dh/p512.c:60:24: fatal error: openssl/bn.h: No such file or directory
 #include <openssl/bn.h>

但我不明白为什么这段代码试图包含来自openssl 的文件,而它位于openssl-1.0.2j/crypto/

openssl-1.1.0c

openssl-1.1.0c/include/openssl/e_os2.h:13:34: fatal error: openssl/opensslconf.h: No such file or directory
 # include <openssl/opensslconf.h>

即使我运行Configure 命令,也不会生成opensslconf.h 文件。

【问题讨论】:

  • &lt;opensslconf.h&gt;&lt;bn.h&gt; 由 OpenSSL 的 Configure 脚本创建。它们特定于平台和架构。另见Build Multiarch OpenSSL on OS X
  • 恐怕OpenSSL的构建可能比一个简单的cc_library能表达的更复杂。我刚刚尝试下载1.0.2j,并没有那么简单。我认为发生的事情是 ./config 如果在配置时启用了 bn (不管是什么),则 bn.h 仅由 ./config 生成,默认情况下并非如此,因此您必须手动(?)排除 bn 子-来自 cc_library 中的源的库。您可以使用 -k(即 bazel -k :openssl)构建以查看更多错误 - bn.h 只是问题之一 - 我还看到缺少 rc5.h 和 md2.h。
  • 有使用 Bazel 构建 OpenSSL 的构建规则:lbuchy/bazel-opensslbazelment/trunk。我没有尝试过其中任何一个,但至少这些构建文件对于了解如何构建它很有用。

标签: android c openssl bazel


【解决方案1】:

根据@Ulf Adams 的回答,我放弃了尝试用 bazel 编译OpenSSL。我改用BoringSSL

BoringSSL 是 OpenSSL 的一个分支,可以通过以下方式轻松地将 incorporated 加入到 bazel 项目中:

git_repository(
    name = "boringssl",
    commit = "_some commit_",
    remote = "https://boringssl.googlesource.com/boringssl",
)

【讨论】:

    猜你喜欢
    • 2017-01-31
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2019-03-14
    • 2015-04-10
    • 1970-01-01
    相关资源
    最近更新 更多