【发布时间】:2016-09-04 11:07:30
【问题描述】:
我有一个 Android 应用,其中 minSdkVersion.apiLevel 设置为 18 targetSdkVersion.apiLevel 设置为 23。因此我将 NDK platformVersion 设置为 18。
不幸的是,在将 OpenSSL 添加到组合后,JNI 库现在无法链接:
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'signal'
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr'
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr'
/Users/pol/Downloads/Cross/External/Android-Libraries/openssl-1.0.2g/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function open_console: error: undefined reference to 'tcgetattr'
如果将platformVersion 设置为 21,问题就会消失(它在 19 时也不起作用)。
如果 Android 应用的 API 级别为 18,但 JNI 库的链接级别为 21,这对 Android 应用意味着什么?在运行 4.3 的设备上启动时会崩溃吗?
我无法想象 4.3 中缺少 signal 符号。这是 NDK 错误吗?
【问题讨论】:
标签: android android-ndk openssl