当前位置: 首页 > 知识库问答 >
问题:

在LinuxARM上运行Android的ARM二进制文件

翟承志
2023-03-14

是否可以在其他具有Linux功能的ARM设备(如Raspberry Pi)上运行为Android构建的ARM二进制文件(而不是.apk)?我正在尝试将我的一个项目移植到ARM上,但我需要使用一个封闭源代码二进制(SopCast),它仅适用于x86(Windows和Linux)和(最近)Android设备。

运行file sopclient显示ELF 32位LSB可执行文件,ARM,版本1(SYSV),动态链接(使用共享库),剥离但sh sopclient说无法执行二进制文件(是的,我之前chmoded x它)。

“经典”ARM Linux内核和Android Linux内核之间有什么明显的区别吗?

共有1个答案

宋耀
2023-03-14

请注意,可能存在对另一个Linux ARM上可能不存在的Android的仿生库的依赖关系?

您可以通过运行readelf-Ss binary_名称来查看符号(如果有),

例如,使用readelf-Ss日志包装器

Symbol table '.dynsym' contains 47 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_unwind_cpp_pr0
     2: 00000000     0 FUNC    GLOBAL DEFAULT  UND strlen
     3: 00000000     0 FUNC    GLOBAL DEFAULT  UND __errno
     4: 00000000     0 FUNC    GLOBAL DEFAULT  UND open
     5: 00000000     0 FUNC    GLOBAL DEFAULT  UND close
     6: 00000000     0 FUNC    GLOBAL DEFAULT  UND __stack_chk_fail
     7: 00000000     0 OBJECT  GLOBAL DEFAULT  UND __stack_chk_guard
     8: 00000000     0 FUNC    GLOBAL DEFAULT  UND pthread_mutex_unlock
     9: 00000000     0 FUNC    GLOBAL DEFAULT  UND pthread_mutex_lock
    10: 00000000     0 FUNC    GLOBAL DEFAULT  UND read
    11: 00000000     0 FUNC    GLOBAL DEFAULT  UND abort
    12: 00000000     0 OBJECT  GLOBAL DEFAULT  UND __sF
    13: 00000000     0 FUNC    GLOBAL DEFAULT  UND memcpy
    14: 00000000     0 FUNC    GLOBAL DEFAULT  UND __libc_init
    15: 00000000     0 FUNC    GLOBAL DEFAULT  UND exit
    16: 0000a170     0 NOTYPE  GLOBAL DEFAULT   19 __dso_handle
    17: 0000a008     0 NOTYPE  GLOBAL DEFAULT   13 __INIT_ARRAY__
    18: 0000a010     0 NOTYPE  GLOBAL DEFAULT   14 __FINI_ARRAY__
    19: 00000000     0 FUNC    GLOBAL DEFAULT  UND setgid
    20: 00000000     0 FUNC    GLOBAL DEFAULT  UND writev
    21: 00000000     0 FUNC    GLOBAL DEFAULT  UND dup2
    22: 00000000     0 FUNC    GLOBAL DEFAULT  UND access
    23: 00000000     0 FUNC    GLOBAL DEFAULT  UND __aeabi_unwind_cpp_pr1
    24: 00000000     0 FUNC    GLOBAL DEFAULT  UND memmove
    25: 00000000     0 FUNC    GLOBAL DEFAULT  UND fork
    26: 00000000     0 FUNC    GLOBAL DEFAULT  UND execvp
    27: 00000000     0 FUNC    GLOBAL DEFAULT  UND strncmp
    28: 00000000     0 FUNC    GLOBAL DEFAULT  UND strcmp
    29: 00000000     0 FUNC    GLOBAL DEFAULT  UND ptsname
    30: 00000000     0 FUNC    GLOBAL DEFAULT  UND setuid
    31: 00000000     0 FUNC    GLOBAL DEFAULT  UND strerror
    32: 00000000     0 FUNC    GLOBAL DEFAULT  UND vsnprintf
    33: 00000000     0 FUNC    GLOBAL DEFAULT  UND unlockpt
    34: 00000000     0 FUNC    GLOBAL DEFAULT  UND wait
    35: 00000000     0 FUNC    GLOBAL DEFAULT  UND fputs
    36: 00009318     0 NOTYPE  GLOBAL DEFAULT  ABS __exidx_start
    37: 00009368     0 NOTYPE  GLOBAL DEFAULT  ABS __exidx_end
    38: 0000a15c     0 NOTYPE  GLOBAL DEFAULT   18 __data_start
    39: 0000a170     0 NOTYPE  GLOBAL DEFAULT  ABS _edata
    40: 0000a170     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
    41: 0000a170     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start__
    42: 0000a188     0 NOTYPE  GLOBAL DEFAULT  ABS _bss_end__
    43: 0000a188     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_end__
    44: 0000a188     0 NOTYPE  GLOBAL DEFAULT  ABS __end__
    45: 0000a188     0 NOTYPE  GLOBAL DEFAULT  ABS _end
    46: 00080000     0 NOTYPE  GLOBAL DEFAULT  ABS _stack

注意使用的符号,这是您检查符号的提示,最后发布这个,readelf-d logwrapper

Dynamic section at offset 0x2020 contains 24 entries:
  Tag        Type                         Name/Value
 0x00000003 (PLTGOT)                     0xa0e8
 0x00000002 (PLTRELSZ)                   208 (bytes)
 0x00000017 (JMPREL)                     0x875c
 0x00000014 (PLTREL)                     REL
 0x00000011 (REL)                        0x882c
 0x00000012 (RELSZ)                      16 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x00000015 (DEBUG)                      0x0
 0x00000006 (SYMTAB)                     0x8280
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000005 (STRTAB)                     0x8570
 0x0000000a (STRSZ)                      490 (bytes)
 0x00000004 (HASH)                       0x8128
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so]
 0x00000001 (NEEDED)                     Shared library: [libm.so]
 0x00000020 (PREINIT_ARRAY)              0xa000
 0x00000021 (PREINIT_ARRAYSZ)            0x8
 0x00000019 (INIT_ARRAY)                 0xa008
 0x0000001b (INIT_ARRAYSZ)               8 (bytes)
 0x0000001a (FINI_ARRAY)                 0xa010
 0x0000001c (FINI_ARRAYSZ)               8 (bytes)
 0x0000001e (FLAGS)                      
 0x00000000 (NULL)                       0x0

有三个库在运行时动态链接,问题是,仿生库是libc.so从原生C和Android的角度来看,所以先仔细检查一下!

还有其他ARMlibc。因此,这将以ucLibC为幌子,因此里程可能会有所不同。唯一可以看到的方法是在Linux ARM下运行它,看看会发生什么,如果它出现分段错误或总线错误,那么你就会知道了。

 类似资料:
  • 问题内容: 我正在使用Flash录制音频并将其上传到节点服务器。Flash客户端是jrecorder的变体。当用户完成录制后,将使用POST请求(而不是表单,因为Flash无法创建文件)来上传音频,并将音频ByteArray作为POST请求的数据(请参见此处的更多信息)。 我可以使用下面的代码在Node- land上正确接收文件,但是发出的音频被破坏了,您听不到任何声音。话虽如此,该文件的内容可以

  • 问题内容: 我知道Oracle在8u33中删除了JavaFX,但是我想知道为什么我不能在jdk1.8.0中使用JavaFX?我是从Oracle存档(http://download.oracle.com/otn/java/jdk/8-b132/jdk-8-linux- arm-vfp- hflt.tar.gz )中获得的 我已经提取了这个并正在运行我的.jar文件 连续收益 并运行 退货 我得到的错

  • 返回 我得到的错误是: 如果你想知道的话,我正在通过Windows7编程并编译程序到一个共享文件,并从一个Raspberry PI运行JAR。 下面是我的安装层次结构,从目录开始: 我还是得到同样的错误。

  • 下面是一个上传二进制文件的例子,WebService类的代码如下: package service; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import javax.activation.DataHandler; public class 

  • 问题内容: 我对linux和shell编写非常陌生。我正在尝试使用以下命令从linux上的安全shell(ssh)运行shellscript: 我收到此错误: 尝试使用此命令: 我犯了同样的错误。 尝试使用此命令: 询问我的密码并给我这个错误:。 1. cat -v path / to / mynewshell.sh的结果是:^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ Rscr

  • 问题内容: 在Python中,对于二进制文件,我可以这样编写: 对于要逐行读取的文本文件,我可以编写以下代码: 简写为: PEP 234中 记录了该惯用语,但我无法为二进制文件找到类似的惯用语。 我已经试过了: 我尝试放置,但这是语法错误,因为在iter()中的callable之后有括号。 我知道我可以编写一个函数,但是默认习惯用法有没有办法在哪里使用缓冲区大小而不是面向行? 感谢您忍受Pytho