Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;没有这样的文件或目录;尝试在Android设备上执行linux二进制文件_Android_Linux_Native - Fatal编程技术网

&引用;没有这样的文件或目录;尝试在Android设备上执行linux二进制文件

&引用;没有这样的文件或目录;尝试在Android设备上执行linux二进制文件,android,linux,native,Android,Linux,Native,我使用Android GCC工具链(纯linux,没有Android或NDK)构建了一个本地linux ARM二进制文件 我通过adb外壳从我的PC连接到一台运行Android 4的平板电脑。 我将二进制文件“推送”到设备上的/system/bin中,希望能在那里执行。我用chmod777将其标记为可执行文件 如果我尝试执行它,我会得到“没有这样的文件或目录” 进一步资料: 这个小程序使用fc和fm库。由于ARM工具链似乎没有crt1,从我发现的一个示例来看,它通常包含启动代码,因此我们在and

我使用Android GCC工具链(纯linux,没有Android或NDK)构建了一个本地linux ARM二进制文件

我通过adb外壳从我的PC连接到一台运行Android 4的平板电脑。 我将二进制文件“推送”到设备上的/system/bin中,希望能在那里执行。我用chmod777将其标记为可执行文件

如果我尝试执行它,我会得到“没有这样的文件或目录”

进一步资料: 这个小程序使用fc和fm库。由于ARM工具链似乎没有crt1,从我发现的一个示例来看,它通常包含启动代码,因此我们在android构建中搜索了包含它的文件,找到了crtbegin_dynamic和crtend_dynamic,但是对于_static等价物,缺少一对,因此我没有将-static传递给GCC。它是用“-nostlib”建造的


有什么问题吗?

如果您在Ubuntu 64这样的64位平台上工作,那么这个技巧可能会帮助您解决这个问题。只需简单地安装i386 32位兼容库即可 apt get:

sudo apt-get install ia32-libs
这对我很有效。如果你遇到同样的麻烦,请告诉我

适用于Ubuntu 13.10或更高版本

正如阿迪蒂亚在对该答案的评论中所说:

从Ubuntu 13.10开始,现在必须运行以下程序:
<代码> SUDOT APT安装LIb32 Z1 < /C>,您可能需要获得C++ STDLIB,用这个:<代码> SUDO APT get安装LIb32 NCURSIS5 LIb32 STDC++ + 6 < /COD> < /P> < P>修改ADITYA的注释,您也可以使用以下的Ubuntu 13.10中的C++ STDLIB:< /P>
sudo apt-get install lib32ncurses5 libstdc++6:i386

从Ubuntu13.10开始,看起来IA32libs已经被以下软件包所取代。现在必须运行这个代码:<代码> SUDOAPT安装LIb32 Z1 < /Cord>我必须得到C++ STDLIB,用这个代码:<代码> SUDO APT get安装LIb32 NCURSIS5 LIb32 STDC++6 >这可能帮助其他人在其Ubuntu Linux系统上运行ADB可执行文件,它似乎没有任何问题。这涉及到在安卓系统下运行二进制程序。不用说,Android没有使用debian风格的打包系统。这与提出的问题无关,这涉及到在Android本身上运行可执行文件——一个不使用debian打包系统的linux。您需要使用nm或类似工具来查找可执行文件的依赖项,但实际上,你应该只使用NDK gcc来为Android构建,除非你坚持用艰难的方式来做事情。请注意,这个问题与开发机器缺少库无关,尽管神秘地吸引了关于这个完全不同主题的流行答案。