gpt4 book ai didi

android - 如何在没有可写和可执行段的情况下为 Android O 编译 .so?如何设置特定的ELF权限?

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:41 24 4
gpt4 key购买 nike

https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Writable-and-Executable-Segments-Enforced-for-API-level-26

目前,Android O Preview 4 由于具有可写和可执行段而阻止加载某些 native 库。他们通过对 ELF 进行扫描来确定这一点。

我正在尝试为没有此类可写和可执行段的 Android 编译 native 共享对象库。

对这种低级编译不是很熟悉,有人可以解释一下如何将段设置为在可写和可执行权限方面正确互斥吗?

我想我可能需要在我的 Android.mk 文件中添加一些特定的标志来防止这个问题,其他初步想法是这可能与用于编译的 NDK 工具链有关。

如有任何关于查找位置的帮助或建议,我们将不胜感激。

最佳答案

GNU 工具链和 Android 工具链长期以来一直在做正确的事情。可以使用文章中的readelf/grep命令:

$ readelf --program-headers -W libBadFlags.so | grep WE

如果没有输出,你应该没问题。如果有 输出,您需要追踪可写/可执行映射的来源。对于 GNU_STACK header ,它可能是一个缺少注释的汇编程序文件(仅仅是疏忽)。但可能会出现更晦涩的事情,因此没有通用的解决方案。

但在大多数情况下,不需要对您的项目进行任何更改。

关于android - 如何在没有可写和可执行段的情况下为 Android O 编译 .so?如何设置特定的ELF权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45512293/

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