当前位置: 代码迷 >> Android >> ndk编译x86可执行文件在linux中无法运行解决办法
  详细解决方案

ndk编译x86可执行文件在linux中无法运行解决办法

热度:12   发布时间:2016-04-28 06:14:49.0
ndk编译x86可执行文件在linux中无法运行
如题所说。
我在win7系统下安装了vmware虚拟机,然后安装了linux系统10.04版本。
现我在linux下写了一个简单的main.c,里面只有printf("hello world\n");,通过gcc编译成main可执行文件,在虚拟机可正常运行,输出正确结果。
之后我用ndk编译main.c,生成一个在安卓系统上能运行的程序,放到安卓系统中修改权限后执行也能输出正确结果。
然后我发现ndk能够编译出x86架构的程序,所有选择了这个架构,编译之后生成“libs/x86/main”,放到虚拟机里,运行,提示“bash: ./main: 没有那个文件或目录”,可是文件一定是存在的,而且也是chmod 777 之后的。所以我认为是用ndk编译出的x86程序在我的linux上不能用。可是这hi为什么呢?我的linux不也是x86架构吗?如果不能在这运行,那应该去哪运行呢?
nkd-build V=1时出现的提示如下:“
Install        : main => libs/x86/main
install -p /mnt/hgfs/share/execise/ndkso/obj/local/x86/main /mnt/hgfs/share/execise/ndkso/libs/x86/main
/home/android-ndk-r8e/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-linux-android-strip --strip-unneeded  /mnt/hgfs/share/execise/ndkso/libs/x86/main”

也就是说ndk用的是i686-linux-android-strip进行编译的x86程序,我的linux中执行uname -a的结果如下“Linux 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux
”后面也是i686的,为什么不行呢?
请高手指点。。。
------解决方案--------------------
ndk能够编译出x86架构的程序,所有选择了这个架构,编译之后生成“libs/x86/main”,放到虚拟机里,运行,提示“bash: ./main: 没有那个文件或目录”

你需要放到x86架構的模擬器裏面運行
  相关解决方案