uclibc在标准linux运行,在Linux上运行适用于Android的ARM二进制文件ARM

请注意,可能会依赖于Android的bionic库,这可能不会出现在另一个Linux ARM上?

您可以检查通过运行readelf -Ss binary_name看到符号如果有的话,

例如,使用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_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

有三个库在运行时动态链接中,事情是, bionic图书馆是从本机C和Android的角度来看libc.so,所以仔细检查一下!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值