是否可以在其他具有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内核之间有什么明显的区别吗?
请注意,可能存在对另一个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的角度来看,所以先仔细检查一下!
还有其他ARM
libc。因此,这将以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