Android编译OpenSSL库报错ui_openssl.c:function read_string_inner

参考:https://wiki.openssl.org/index.php/Android

在Android NDK环境下编译OpenSSL,基本没有遇到什么问题,但是在使用编译的OpenSSL库时,遇到如下错误:

ui_openssl.c:function read_string_inner: error: undefined reference to 'signal'

解决办法:

APP_PLATFORM := android-21

如果想在4.x上也可以使用,经过一番搜索,这里
说到了问题的关键,原来在API 21之前,signal是inline方式的,API 21之后才不是inline。如下:

// android-19

/* the default is bsd */
static __inline__ __sighandler_t signal(int s, __sighandler_t f)
{
    return bsd_signal(s,f);
}

//android-21
extern sighandler_t signal(int, sighandler_t);

找到了原因,那么解决办法就是,将OpenSSL使用低版本的API方式编译,这样就会使用inline方式,后续再引用时,不会再进行链接。

上一篇 Android NDK FFMpeg编译配置
下一篇 Android下OpenCV实现人脸检测
目录
文章列表
1 Nodejs crypto密码模块
Nodejs crypto密码模块
2
Swift UI - 带结果列表的搜索条(UISearchDisplayController)的用法
Swift UI - 带结果列表的搜索条(UISearchDisplayController)的用法
3
JNI和NDK开发之动态注册JNI函数
JNI和NDK开发之动态注册JNI函数
4
Redis GEO
Redis GEO
5
Android接入Firebase推送不执行onMessageReceived方法
Android接入Firebase推送不执行onMessageReceived方法
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。