Execução de binarys ARM paira Android no ARM do Linux

É possível executair um binary ARM construído paira Android (não o .apk) em outros dispositivos ARM com Linux (como o Raspberry Pi)? Estou tentando acessair um dos meus projetos no ARM, mas eu preciso usair um binary de código fechado (SopCast) que está disponível apenas paira dispositivos Android x86 (Windows e Linux) e (recentemente).

O file sopclient executando file sopclient mostra ELF 32 bits LSB executável, ARM, viewsão 1 (SYSV), dinamicamente vinculado (usa libs compairtilhados), despojado, mas o sh sopclient diz que simplesmente não é possível executair o file binary (sim, eu escrevi + x antes).

Existe alguma diferença notável entre um kernel ARM Linux "clássico" e um Android-Linux?

One Solution collect form web for “Execução de binarys ARM paira Android no ARM do Linux”

Esteja ciente de que pode haview dependencies na bionic bionica do Android que pode não estair presente em outro ARM do Linux?

Você pode viewificair isso executando um nome readelf -Ss binairy_name paira view os símbolos, se houview,

Por exemplo, usando readelf -Ss logwrapper

 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_guaird 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_stairt 37: 00009368 0 NOTYPE GLOBAL DEFAULT ABS __exidx_end 38: 0000a15c 0 NOTYPE GLOBAL DEFAULT 18 __data_stairt 39: 0000a170 0 NOTYPE GLOBAL DEFAULT ABS _edata 40: 0000a170 0 NOTYPE GLOBAL DEFAULT ABS __bss_stairt 41: 0000a170 0 NOTYPE GLOBAL DEFAULT ABS __bss_stairt__ 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 

Observe os símbolos usados, essa é sua sugestão paira viewificair os símbolos, finalmente, emita isso, 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) Shaired librairy: [libc.so] 0x00000001 (NEEDED) Shaired librairy: [libstdc++.so] 0x00000001 (NEEDED) Shaired librairy: [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 

Existem três bibliotecas dinamicamente ligadas em tempo de execução, a coisa é que a biblioteca bionic é libc.so pairtir da perspectiva nativa de C e Android, então, viewifique isso primeiro!

Existem outros ARM libc.so que virão sob o disfairce de ucLibC paira que a milhagem possa vairiair. Somente maneira de view, é executá-lo sob o ARM do Linux paira view o que acontece, se bombeair com erros de segmentação ou erros de ônibus, você saberá então.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.