执行linux 命令行程序not found 错误

最近在做tcu 的项目,重新移植了文件系统。运行客户的提供的程序报错:

和客户沟通,交叉编译工具版本是一致的,感觉是缺少动态库

用dd命令查看,但是这ldd无法显示,

developer-RH2485-V2:$ ldd qrencode
        not a dynamic executable

在网上看了看 ,找到了一种方式 使用readelf

readelf -l qrencode | grep ld-linux
      [Requesting program interpreter: /lib/ld-linux-armhf.so.3

说明运行该文件需要/lib/ld-linux-armhf.so.3文件。

查看/lib目录,在 lib目录下确实没用ld-linux-armhf.so.3

在lib目录下建立软链接

ln -s ld-2.19-2014.08-1-git.so  ld-linux-armhf.so.3 

sync

再次运行

解决!

在板子上通过file命令查看 报错和不报错的二进制

可以看出两者的interpreter(解释器)不同。解释器负责加载动态库

关于ld-linux.so.3

readelf命令是Linux下的分析ELF文件的命令,这个命令在分析ELF文件格式时非常有用,下面以ELF格式可执行文件test为例详细介绍:

readelf -v

显示版本

readelf -h

显示帮助

readelf -a test

显示test的全部信息

readelf -h test
显示test的ELF Header的文件头信息(就是ELF文件开始的前52个字节)

readelf -l test
显示test的Program Header Table中的每个Prgram Header Entry的信息(如果有)

readelf -S test
显示test的Section Header Table中的每个Section Header Entry的信息(如果有)

readelf -g test
显示test的Section Group的信息(如果有)

readelf -s test
显示test的Symbol Table中的每个Symbol  Table Entry的信息(如果有)

readelf -e test

显示test的全部头信息(包括ELF Header,Section Header和Program Header,等同与 readelf -h -l -S test)

readelf -n test

显示test的note段的信息(如果有)

readelf -r test

显示test中的可重定位段的信息(如果有)

readelf -d test

显示test中的Dynamic Section的信息(如果有)

readelf -V test

显示test中的GNU Version段信息(如果有)

其实上述的命令只是把ELF文件格式的不同部分输出而已,只要了解ELF文件格式后这些命令就不难了啦~~

复制代码

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值