【发布时间】:2014-10-14 09:15:26
【问题描述】:
我已经为 Android 构建了 OpenSSL。这生成了一个扩展名为.so.1.0.0 的so,以及一个扩展名为.so 的符号链接。这对 Android 来说当然是个问题,因为它希望所有共享库都具有 .so 格式的扩展名。
(此外,我还有一些其他预构建的库需要名为 libssl.so 的文件。)
因此,我需要一个以 .so 结尾的库,并且所有依赖它的库都需要链接到扩展名为 .so 的文件。这里的 OpenSSL 说明:http://wiki.openssl.org/index.php/Android 建议将文件重命名为 libssl.so。我已经做到了。
但是,当我尝试使用 ajb-tools (https://subversion.assembla.com/svn/ajb-tools/trunk/android/android-cross/android-cross),使用 -lopenssl 构建我自己的库(也需要 openSSL)时,该库仍然具有 soname “libssl.so.1.0.0”生成显然需要格式为 libssl.so.1.0.0 的库文件的共享对象,该文件在构建时不再存在。在运行时,Android 应用程序抱怨它找不到这个文件。
我尝试将-l:libssl.so 放入我的库的makefile 中,但无济于事。 readelf -d 仍然报告我的库需要 libssl.so.1.0.0。
有没有办法强制库链接到特定的文件名。或者我是否必须以这样的方式构建 OpenSSL,它会生成一个 soname 设置为“.so”的库?
【问题讨论】:
-
我设法构建了一个无版本的
libcrypto.so,参见stackoverflow.com/a/33869277/4735903。
标签: android android-ndk openssl java-native-interface shared-libraries