使用Bazel编译OpenSSL for Android

时间:2016-12-19 15:31:55

标签: android c openssl bazel

我正在使用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存档。并在我的cc_library文件中添加了BUILD条目。

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文件。

1 个答案:

答案 0 :(得分:1)

基于@Ulf Adams&#39;回答,我放弃了尝试用bazel编译OpenSSL。我改为使用BoringSSL

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

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