在android

时间:2016-07-13 11:46:33

标签: android c++ linux android-ndk openssl

我按照openssl wiki构建openssl静态库,我的构建环境如下:

的OpenSSL 1.0.2h

NDK:机器人-NDK-R12B

机器人-API:机器人-14

android_arch =拱形臂

首先,我使用md5来测试构建成功,没关系。但是当我使用其他一些函数时,会出现如下链接错误:

libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'bsd_signal'

我搜索这个错误,发现在android版本小于或等于19,在signal.h(https://chromium.googlesource.com/android_tools/+/20ee6d20/ndk/platforms/android-19/arch-arm/usr/include/signal.h)中,有bsd_signal符号,但在android版本21或更高的signal.h中,bsd_signal是删除,所以我将android-api更改为21并重建了库,在Android版本高于或等于21时一切正常,但在早期版本中,它失败了。 我在ui_openssl.c(https://github.com/openssl/openssl/blob/master/crypto/ui/ui_openssl.c

中找到了代码

修改一些源代码会解决这个问题吗?

我对两点非常困惑:

  1. 在android的每个版本中,都有一个名为signal()的函数 以前的版本小于21,它是一个包装函数 bsd_signal,在以后的版本中,它不是一个包装函数,所以那里 当我们调用signal()时必须没有错误。
  2. 当我使用android-api = 14构建库时,库有相同的 在android中,Android版本小于19且高于19的错误 如果版本小于或等于19,则signal.h中有bsd_signed(),I 认为库必须可以在小于19的版本中使用而不能 在其他版本中使用。

0 个答案:

没有答案