gpt4 book ai didi

android - 警告 : libcryptopp. so: is missing DT_SONAME 将使用 basename 作为替换

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:01:21 25 4
gpt4 key购买 nike

我正在尝试构建 libcryptopp.so 并将其包含在我的 JNI 代码中,请按照 Android Crypto++ 中的指南进行操作,我遇到了以下问题。

Crypto++ 5.6.3 中缺少符号问题

原来我用的是Crypto++ 5.6.3,遇到这个问题:

 java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_Z9GlobalRNGv" 

referenced by "/data/app/com.example.administrator.jnitest-2/lib/arm/libcryptopp.so"...

我检查了 libcryptopp.so:

$ readelf -Ws libcryptopp.so | grep _Z9GlobalRNGv
1406: 00000000 0 NOTYPE GLOBAL DEFAULT UND _Z9GlobalRNGv
15836: 00000000 0 NOTYPE GLOBAL DEFAULT UND _Z9GlobalRNGv

切换到 Crypto++ 5.6.4 解决了这个问题,但我仍然不知道原因,又遇到了另一个问题:

缺少 DT_SONAME

12-21 09:50:20.837 21677-21677/com.example.administrator.jnitest   
W/linker: /data/app/com.example.administrator.jnitest- 1/lib/arm/libcryptopp.so: is missing DT_SONAME will use basename as a
replacement: "libcryptopp.so"

实际上这只是一个警告,应用不会崩溃。

我正在使用最新版本的安卓 Mashwallow MOB31K。有人在使用其他库时也遇到过类似的问题

https://github.com/bytedeco/javacpp-presets/issues/188

在 Android N-preview 上。

为什么我会收到警告,我该如何解决?

最佳答案

经过一些尝试,我找到了一个不完美的解决方案。

看来android N turns现在需要库版本了。

在构建时打开 SONAME 标志。

Cryptopp 默认关闭版本标志。在 GNUmakefile-cross 中:

HAS_SOLIB_VERSION ?= 0

将值设置为 1:

HAS_SOLIB_VERSION ?= 1

构建,然后使用生成的.so文件。警告会消失。

问题是库不能在 android 5.0 上运行。所以我们现在最好不要管这个警告。

关于android - 警告 : libcryptopp. so: is missing DT_SONAME 将使用 basename 作为替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41255199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com