admin 管理员组

文章数量: 887017

2019-07-22

关键字:/system/bin/sh: xxx: No such file or directory

虽然说 Android 也是基于 Linux 的,但总归来说它们的编译链还是很有可能不一样的,这就导致编译出来的程序有可能不能通用,即使它们都是基于 Linux 的。

而有些不能通用的根本原因在于程序运行时所依赖的环境不满足,比如常见的就是一些库文件缺失了。

笔者这边有个需求,需要将一个第三方的,原本目标运行环境是 Linux 嵌入式环境的可执行程序在 Android4.4 的环境上运行起来。

刚一接到这个需求的时候我就一阵头大,一想到编译链不同我就两脚发软。

果然,刚一想运行这一程序,它就给报了一个这样的错误提示

/system/bin/sh: ./system/home1/ctstor/ctserver: No such file or directory

想都不带想的,肯定是编译链不同导致运行环境不满足使得程序不能运行的。

但问题还得解决啊,总不能直接就和领导说编译链不同搞不了吧。

怎么办呢?看看它到底缺了些什么。

用纯正 Linux 环境来看一下这个可执行程序的环境依赖信息。笔者这边是将程序放到 ubuntu 下去分析,因为笔者的 Android4.4 上没有相关程序。

通过以下命令查看这个可执行程序的编译依赖信息

readelf -l xxx

结果如下所示

Elf file type is EXEC (Executable file)

Entry point0xe6e0There are8 program headers, starting at offset 52Program Heade

本文标签: 程序 可执行 Linux 安卓跑 Android