相关疑难解决方法(0)

执行二进制文件时"没有这样的文件或目录"错误

我在Ubuntu 9.10 x86_64上安装了一个二进制Linux应用程序.该应用程序附带了旧版本的gzip(1.2.4),该版本是为更老的内核编译的:

$ file gzip 
gzip: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped
Run Code Online (Sandbox Code Playgroud)

我无法执行此程序.如果我试过,这发生了:

$ ./gzip
-bash: ./gzip: No such file or directory
Run Code Online (Sandbox Code Playgroud)

ldd对这个二进制文件同样不满意:

$ ldd gzip
        not a dynamic executable
Run Code Online (Sandbox Code Playgroud)

我很好奇:这个问题的最可能来源是什么?一个损坏的文件?或者由于为更老的{kernel,libc,...}而构建的二进制不兼容性?

每个人的建议,这里的输出strace ./gzip:

execve("./gzip", ["./gzip"], [/* 24 vars */]) = -1 ENOENT (No such file or directory)
dup(2)                                  = 3
fcntl(3, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 10), ...}) = 0
mmap(NULL, 4096, …
Run Code Online (Sandbox Code Playgroud)

linux

125
推荐指数
3
解决办法
12万
查看次数

使用arm-linux-gnueabi-gcc交叉编译Android的静态C hello世界

我想使用arm-linux-gnueabi-gcc从C构建静态hello世界,而不是使用NDK独立工具链或代码源.

在Ubuntu ......

我做了以下事情:

sudo apt-get install gcc-arm-linux-gnueabi
Run Code Online (Sandbox Code Playgroud)

我创建了一个像这样的hi.c:

#include <stdio.h>

int main(int argc, char** argv) {
   printf("hello world\n");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编译它像这样:

arm-linux-gnueabi-gcc -static hi.c -o hi 
Run Code Online (Sandbox Code Playgroud)

我在这样的模拟器上运行它:

adb push hi /data/hi
adb shell /data/hi
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个:

[1]   Illegal instruction     /data/hi
Run Code Online (Sandbox Code Playgroud)

我忘记了什么步骤?根据过去的经验,这"应该"有效,但我显然搞砸了.

c android arm cross-compiling android-ndk

36
推荐指数
3
解决办法
6万
查看次数

标签 统计

android ×1

android-ndk ×1

arm ×1

c ×1

cross-compiling ×1

linux ×1