Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android art elf和Linux elf文件之间有什么区别?_Android_Linux_Gcc_Runtime_Elf - Fatal编程技术网

android art elf和Linux elf文件之间有什么区别?

android art elf和Linux elf文件之间有什么区别?,android,linux,gcc,runtime,elf,Android,Linux,Gcc,Runtime,Elf,艺术维基中已对其进行了描述: ,该ART在安装时将apk文件编译为ELF文件 GNU/Linux上的GCC也会创建ELF文件作为输出,而不是.out格式 我知道两种环境中的API和Architectural都有差异,但这两种格式在结构上或其他方面是否有显著差异 如果架构相同(android已经移植到x86),那么这些格式彼此兼容吗 或者这两种文件格式完全不同?自制说明:在中,您可以发现“文件实际上嵌入在ELF对象文件中”(在PDF的第16页,您可以看到OAT结构)。文件结构与上的相同。这是可能的

艺术维基中已对其进行了描述: ,该ART在安装时将apk文件编译为ELF文件

GNU/Linux上的GCC也会创建ELF文件作为输出,而不是.out格式

我知道两种环境中的API和Architectural都有差异,但这两种格式在结构上或其他方面是否有显著差异


如果架构相同(android已经移植到x86),那么这些格式彼此兼容吗

或者这两种文件格式完全不同?

自制说明:在中,您可以发现“文件实际上嵌入在ELF对象文件中”(在PDF的第16页,您可以看到OAT结构)。文件结构与上的相同。这是可能的,因为“在设计上是灵活和可扩展的,并且它不受任何特定处理器或体系结构的约束”

From:使用Android运行时(ART),这是自Android 5.0“棒棒糖”以来的默认设置,所有应用程序在安装时都编译成本地ELF二进制文件

结论:您的问题的答案是gcc elf和android elf是相同的文件格式。有关格式的更多信息,请参见

更新

如果架构相同,这些格式是否相互兼容


对于android oat文件(通过我的一个应用程序进行检查)显示oat文件类型为“DYN(共享对象文件)”。它类似于.so文件,所以如果您的项目使用JNI libs,您可以看到这些文件。由于“bionic的系统库函数和动态链接器”(在android中使用),这些elf文件与通常的GNU/Linux elf文件不兼容,即使它们是为相同的体系结构构建的。您可以找到有关它们不兼容原因的更多说明。仿生开启。

如果架构相同(android已移植到x86),这些格式是否相互兼容?。。该问题尚未回答。我在问题更新中添加了更多内容(没有在评论中发布,因为我试图添加更多描述,这在评论中看起来很尴尬)。解释是6:30-10:00