linux软件not found,linux 执行程序时,提示not found问题分析

sh: ./test: not found

通常可以通过readelf查看该进程文件所以依赖的运行环境,检查相关路径是否存在对应的文件.

比如如下:

1. 检查/lib目录,发现ld-X.XX.so为ld-2.26.so, 但没有ld-linux.so.3,那么可以建立一个软连接ln -s ld-2.26.so ld-linux.so.3

2. 将程序需要用到的动态库存在在指定目录SPEC_PATH,然后通过export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):SPEC_PATH

注意

1. interpreter程序动态库解析器/加载器是绝对路径,设置LD_LIBRARY_PATH指向对应目录对于部分系统则无效

2. Shared library可以是相对路径,设置LD_LIBRARY_PATH即可

$ readelf -l test

Elf file type is DYN (Shared object file)

Entry point 0x786a4

There are 10 program headers, starting at offset 52

Program Headers:

Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align

PHDR 0x000034 0x00000034 0x00000034 0x00140 0x00140 R 0x4

INTERP 0x000174 0x00000174 0x00000174 0x00013 0x00013 R 0x1

[Requesting program interpreter: /lib/ld-linux.so.3]

LOAD 0x000000 0x00000000 0x00000000 0x491b6c 0x491b6c R E 0x1000

LOAD 0x491d20 0x00492d20 0x00492d20 0x06880 0x186c0 RW 0x1000

DYNAMIC 0x495ec0 0x00496ec0 0x00496ec0 0x00140 0x00140 RW 0x4

NOTE 0x000188 0x00000188 0x00000188 0x00044 0x00044 R 0x4

GNU_EH_FRAME 0x491b64 0x00491b64 0x00491b64 0x00008 0x00008 R 0x4

GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x10

EXIDX 0x48da50 0x0048da50 0x0048da50 0x04110 0x04110 R 0x4

GNU_RELRO 0x491d20 0x00492d20 0x00492d20 0x042e0 0x042e0 RW 0x8

Section to Segment mapping:

Segment Sections...

00

01 .interp

02 .interp .note.ABI-tag .note.gnu.build-id .dynsym .dynstr .gnu.hash .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.extab .ARM.exidx .eh_frame .eh_frame_hdr

03 .data.rel.ro.local .jcr .fini_array .init_array .data.rel.ro .dynamic .data .tm_clone_table .got .bss

04 .dynamic

05 .note.ABI-tag .note.gnu.build-id

06 .eh_frame_hdr

07

08 .ARM.exidx

09 .data.rel.ro.local .jcr .fini_array .init_array .data.rel.ro .dynamic

$ readelf -d test

Dynamic section at offset 0x495ec0 contains 34 entries:

Tag Type Name/Value

0x00000003 (PLTGOT) 0x4990e8

0x00000002 (PLTRELSZ) 2392 (bytes)

0x00000017 (JMPREL) 0x6a16c

0x00000014 (PLTREL) REL

0x00000011 (REL) 0x63e2c

0x00000012 (RELSZ) 25408 (bytes)

0x00000013 (RELENT) 8 (bytes)

0x6ffffffa (RELCOUNT) 3154

0x00000015 (DEBUG) 0x0

0x00000006 (SYMTAB) 0x1cc

0x0000000b (SYMENT) 16 (bytes)

0x00000005 (STRTAB) 0x17b5c

0x0000000a (STRSZ) 256100 (bytes)

0x6ffffef5 (GNU_HASH) 0x563c0

0x00000001 (NEEDED) Shared library: [libpthread.so.0]

0x00000001 (NEEDED) Shared library: [libglib-2.0.so.0]

0x00000001 (NEEDED) Shared library: [librt.so.1]

0x00000001 (NEEDED) Shared library: [libstdc++.so.6]

0x00000001 (NEEDED) Shared library: [libm.so.6]

0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]

0x00000001 (NEEDED) Shared library: [libc.so.6]

0x00000001 (NEEDED) Shared library: [ld-linux-armhf.so.3]

0x0000000c (INIT) 0x6aac4

0x0000000d (FINI) 0x3baff8

0x0000001a (FINI_ARRAY) 0x49605c

0x0000001c (FINI_ARRAYSZ) 4 (bytes)

0x00000019 (INIT_ARRAY) 0x496060

0x0000001b (INIT_ARRAYSZ) 264 (bytes)

0x6ffffff0 (VERSYM) 0x60d68

0x6ffffffe (VERNEED) 0x63c9c

0x6fffffff (VERNEEDNUM) 7

0x00000000 (NULL) 0x0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值