首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何选择正确的ANDROID_EABI?

如何选择正确的ANDROID_EABI?
EN

Stack Overflow用户
提问于 2014-11-25 23:49:27
回答 1查看 2.3K关注 0票数 4

我正在Ubuntu上为Android构建libopenssl。我注意到其中一个步骤是定义以下两个术语:

代码语言:javascript
复制
_ANDROID_API="android-16"
_ANDROID_EABI="arm-linux-androideabi-4.6"

_ANDROID_API的值“Androd-16”是有意义的,因为它对应于我们支持的最低级别AndroidVersion4.1。

但是,我对为_ANDROID_EABI选择正确的值感到困惑。如果我在$ANDROID_NDK_ROOT/toolchains下面查看,我看到了手臂-linux-androideabi-4.6,arm-linux-androideabi-4.8,和arm androideabi-4.9。我该如何决定哪一个是适合我的?android_eabi版本和我们支持的最低版本安卓之间有什么关系吗?

另外,我正在构建的一些其他库不需要指定任何_ANDROID_EABI。如果他们以自动方式选择EABI,那么当所有库都链接到一个.so文件中时,会不会出现问题呢?致以问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-26 07:17:19

首先,在这些openssl构建脚本中使用的命名是令人困惑的。您不选择"EABI版本“(EABI是当前在ARM上使用的ABI的名称),而是选择一个工具链版本( openssl构建脚本将其称为”EABI工具的版本“,尽管它可以是一个非EABI工具链,比如x86)。

所使用的工具链版本与支持的最低Android版本之间没有任何关系。

若要自行决定使用哪个工具链,请按照在任何其他情况下选择编译器版本的方式进行。较新的主要版本可能(稍微)不太成熟,但可能会优化得更好。

如果库不要求您直接命名工具链,那么它们可能已经为您硬编码了一个选项(基于gcc 4.6的工具链已经成为NDK的一部分,而其他的工具链则较新--之前也有基于gcc 4.4的工具链),或者可以选择NDK中默认的哪一个。

要在NDK中找到默认值,您可以这样做:

代码语言:javascript
复制
NDK_PROJECT_PATH=<ndk>/samples/hello-jni <ndk>/ndk-build DUMP_TOOLCHAIN_PREFIX APP_ABI=armeabi

(只要不覆盖工具链版本,就可以指向带有路径的任何NDK项目。而不是DUMP_TOOLCHAIN_PREFIX,您也可以使用DUMP_TOOLCHAIN_VERSION。)

还请注意,NDK已经不推荐现在默认的GCC 4.6工具链,并且可能会删除它(并将默认值提高到新的工具链之一)--有关这个问题的一些讨论,请参见https://groups.google.com/forum/#!topic/android-ndk/q8jchajqKIo

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27138943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档