我正在使用bazel为我的Android应用构建本地库。
我想在其中使用一些OpenSSL函数,例如:
#include <jni.h>
#include <openssl/aes.h>
...
AES_encrypt(in, out, key);
如何将openssl库添加到Bazel构建中? 子问题: 我应该使用哪个归档文件?
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
文件。
<opensslconf.h>
和<bn.h>
是由OpenSSL的Configure
脚本创建的。它们是特定于平台和架构的。另请参见在OS X上构建Multiarch OpenSSL。 - jww